home *** CD-ROM | disk | FTP | other *** search
/ A.C.E. 3 / ACE CD 3.iso / files / docs / real3ddo.lha / Real3DPart5.doc < prev    next >
Encoding:
Text File  |  1994-11-27  |  146.0 KB  |  5,409 lines

  1.  
  2.  
  3.                                PART 5
  4.  
  5.  
  6.  
  7.                             - REFERENCE 1.20 -
  8.  
  9. Figure R1-11: Regular Polygon-based Visibles  (PICTURE: R1-11)
  10.  
  11. Reg.polygon
  12.  
  13. PRIMITIVE: polygon
  14. Create regular polygonal plane.
  15. NUMERIC: number of sides of a regular polygon
  16. DEFINE: center and radial size.
  17.  
  18. Reg.polyhedr.
  19.  
  20. PRIMITIVE: polyhedron
  21. Create regular polygonal cross-section prism.
  22. NUMERIC: number of sides of a regular polygon
  23. DEFINE: center and radial size of polygonal cross-section, The polygonal
  24. cross-section is extruded to the defined depth.
  25.  
  26. Reg.polymid
  27.  
  28. PRIMITIVE: polymid
  29. Create regular polygonal based pyramid.
  30. NUMERIC: number of sides of a regular polygon
  31. DEFINE: center and radial size of regular polygon base and then apex.
  32.  
  33. Reg.cut.plmd
  34.  
  35. PRIMITIVE: cut-polymid
  36. Create regular polygonal cross-section prism.
  37. NUMERIC: number of sides of a regular polygon
  38. DEFINE: center and radial size of regular polygon base and then center and
  39. radial size of truncating surface.
  40.  
  41.                             - REFERENCE 1.21 -
  42.  
  43. Circle
  44.  
  45. PRIMITIVE: ellipse
  46. Create circular plane.
  47. DEFINE: center and radius.
  48.  
  49. 3P Circle
  50.  
  51. PRIMITIVE: ellipse
  52. Create circular plane.
  53. DEFINE: three points on the circumference of a circle to create a circular
  54. plane.
  55.  
  56. Cylinder
  57.  
  58. PRIMITIVE: cylinder
  59. Create cylindrical prism.
  60. DEFINE: circular cross-section to be extruded to defined depth.
  61.  
  62. Cone
  63.  
  64. PRIMITIVE: cone
  65. Create conical surface.
  66. DEFINE: circular base and apex.
  67.  
  68. Cutcone.
  69.  
  70. PRIMITIVE: cut-cone
  71. Create conical surface with truncated apex.
  72. DEFINE: circular base and center of truncating surface.
  73.  
  74. Figure R1-12: Circle-based Visibles  (PICTURE: R1-12)
  75.  
  76.                             - REFERENCE 1.22 -
  77.  
  78. Figure R1-13: Ellipsoid Visibles  (PICTURE: R1-13)
  79.  
  80. Sphere
  81.  
  82. PRIMITIVE: ellipsoid
  83. Create regular spherical surface.
  84. DEFINE: center and radius.
  85.  
  86. Ellipsoid
  87.  
  88. PRIMITIVE: ellipsoid
  89. Create ellipsoid surface with elliptical axes in two directions.
  90. DEFINE: center and then the size of the two axis of an ellipse. This
  91. ellipse defines the major circumference of the ellipsoid parallel to the
  92. input plane. The depth is pre-defined.
  93.  
  94. Ellipsegment
  95.  
  96. PRIMITIVE: ellipse-segment
  97. Create ellipsoid with two cutting planes equidistant from the defined
  98. circular circumference.
  99.  
  100. DEFINE:
  101. center and size of a circle about the major axis of the ellipsoid parallel
  102. to the input plane. Then define center and size of the cutting planes.
  103. The depth is pre-defined.
  104.  
  105. Cut ellipseg
  106.  
  107. PRIMITIVE:
  108. ellipse-segment Create ellipsoid with two cutting planes, one positioned
  109. on the defined circumference.
  110.  
  111. DEFINE:
  112. center and size of two circular planes. The larger one becomes the major
  113. circumference of the ellipsoid parallel to the input plane.
  114.  
  115.                             - REFERENCE 1.23 -
  116.  
  117.  
  118. Figure R1-14: Hyperboloid Visibles  (PICTURE: R1-14)
  119.  
  120. Hyperbol
  121.  
  122. PRIMITIVE: hyperboloid
  123. Create hyperbolic surface with two cutting planes equidistant from a
  124. "waist".
  125. DEFINE:
  126. center and radius of two circular cross-sections. The larger of the two
  127. circular sections defines the 1 st & 2nd cutting planes and the smaller
  128. defines the waist.
  129.  
  130. Cut hyperb.
  131.  
  132. PRIMITIVE: hyperboloid
  133. Create hyperbolic surface with two cutting planes, one positioned at the
  134. "waist" of the surface.
  135. DEFINE:
  136. center and size of two circular cross-sections. The smaller one defines
  137. the circumference of the waist.
  138.  
  139. Sectors/
  140.  
  141. The creation functions in this sub-menu enable various visibles to be
  142. constructed with cross-sections which are a sector of a circle. The first
  143. coordinate describes the center of the circular cross-section, then the
  144. start-point of the segment is defined by the next coordinate, finally the
  145. third coordinate defines the angle of the segment and the radius of the
  146. cross-section.
  147.  
  148. Figure R1-15: Sector Visibles  (PICTURE: R1-15)
  149.  
  150.                             - REFERENCE 1.24 -
  151.  
  152. Circle
  153.  
  154. PRIMITIVE: ellipse SECTOR
  155. Create sectored circular plane.
  156. DEFINE:
  157. sector cross-section only.
  158.  
  159. Cylinder
  160.  
  161. PRIMITIVE: cylinder SECTOR
  162. Create sectored cylinder.
  163. DEFINE:
  164. sector cross-section only.
  165.  
  166. Cone
  167.  
  168. PRIMITIVE: cone SECTOR
  169. Create sectored cone.
  170. DEFINE:
  171. cross-section and apex.
  172.  
  173. Cut cone
  174.  
  175. PRIMITIVE: cut-cone SECTOR
  176. Create sectored cone with truncated apex.
  177. DEFINE:
  178. cross-section then center and radial size of cross-section at the apex.
  179.  
  180. Ellipsegment
  181.  
  182. PRIMITIVE: ellipse-segment SECTOR
  183. Create sectored ellipsoid with equidistant cutting planes.
  184. DEFINE:
  185. cross-section then center and size of second cross-section. Larger will
  186. be circumference.
  187.  
  188. Cut ellipseg.
  189.  
  190. PRIMITIVE: ellipse-segment SECTOR
  191. Create sectored ellipsoid with cutting planes at circumference and end.
  192. DEFINE:
  193. cross-section then center and size of second cross-section. Larger cross-
  194. section will be the circumference.
  195.  
  196. Hyperbol
  197.  
  198. PRIMITIVE: hyperboloid SECTOR
  199. Create sectored hyperbolic surface with waist.
  200. DEFINE:
  201. cross-section then center and size of second cross-section. Smaller cross-
  202. section will be the waist.
  203.  
  204. Cut hyperbol
  205.  
  206. PRIMITIVE: hyperboloid SECTOR
  207. Create sectored hyperbolic surface truncated at waist.
  208. DEFINE:
  209. cross-section then center and size of second cross-section. Smaller cross-
  210. section will be the waist.
  211.  
  212. Structure/
  213.  
  214. Level
  215.  
  216. PRIMITIVE: level OR
  217. Create a structure which can be used to contain objects at a new level of
  218. the hierarchy. The arrangement of objects in levels is key feature used by
  219. many of the functions and systems of REAL 3D.
  220. Levels are used for defining a logical structure of the object and they
  221. can be compared to directories (Drawers) of Disk Operating Systems.
  222.  
  223.                             - REFERENCE 1.25 -
  224.  
  225.                                      +-------+
  226.                                     /| brace |
  227.                                    / +-------+
  228.                           +------+/  +--------+
  229.                           | base |---| stand2 |
  230.                          /+------+\  +--------+
  231.                +-------+/          \ +--------+
  232.      +------+ /| table |\ +-------+ \| stand1 |
  233.      | Root |/ +-------+ \| Cover |  +--------+
  234.      +------+             +-------+
  235.  
  236. Figure R1-16: Hierarchy Levels  (PICTURE: R1-16)
  237.  
  238. Link
  239.  
  240. PRIMITIVE: link
  241. This creates structures each of which references the selected objects.
  242. This "symbolic-link" can then be cut and pasted to another part of the
  243. hierarchy to provide access to the original object. A link can only be
  244. used to read the data from a target object. Modifications are not passed
  245. to the object through a link. The most common situation which requires the
  246. use of links is for using one object to define the parameters for several
  247. methods. They are also necessary sometimes when defining texture morphing
  248. using the MORPH methods.
  249.  
  250. Links can also be used for jumping from one level to another by double
  251. clicking the desired link on Select window. If link points to a level
  252. object, that level becomes the current level. If it points to a primitive,
  253. probably nothing happens, because most primitives cannot be the current
  254. level, in other words, they cannot have sub-structure.
  255.  
  256. Group
  257.  
  258. PRIMITIVE: group
  259. Create a structure called a "group" which refers to the points on a
  260. freeform. Unlike links, groups can pass data in both directions. Hence
  261. modifying a group modifies the points on the original freeform. The points
  262. to form the group are taken from the vector-stack, so they must be
  263. selected from the freeform first by using <DRAG><SHIFT> or Lasso selector.
  264. If several objects are selected, then a new level will be created
  265. containing all the new groups. Groups are usually created inside the
  266. freeform they refer to, so unexpected cumulative modification results are
  267. avoided (same points are modified first through freeform itself and again
  268. through groups referring to freeform).
  269.  
  270. HOT-KEYS:
  271. There are also two hot-key combinations:
  272. <CTRL> <SHIFT><DRAG> and
  273. <CTRL><SHIFT><ALT><DRAG> which will automatically create a group with the
  274. name "group tmp", or a level with the name "level tmp". When <ALT> is
  275. used, then only points from the selected freeforms are used.
  276.  
  277. Method
  278.  
  279. PRIMITIVE: level OR SMTH
  280. Creates a new level and opens the animation-properties requester to allow
  281. a method typed to be selected. This will then be assigned to the new
  282. level, which becomes the current-level to allow the parameters for the
  283. method to be defined easily.
  284.  
  285. Note:
  286. That the same result can be achieved by creating a level object using the
  287. function Create/Structure/Level, and changing the method type using the
  288. function Modify/Properties/Animation.
  289.  
  290. Methods are "intelligent objects used for creating animations. In other
  291. words, method objects cause target objects to be animated according to
  292. parameter objects placed under them.
  293.  
  294.                             - REFERENCE 1.26 -
  295.  
  296. Light-sources/
  297.  
  298. Point
  299.  
  300. PRIMITIVE: offset LIGHT-SOURCE
  301. Create point light source.
  302. DEFINE: single coordinate.
  303.  
  304. This is rendered as a single infinite point of light. Because the point
  305. light has no dimension, it can produce only sharp edged shadows. In real
  306. world the intensity is inversely proportional to square of distance, but
  307. in REAL 3D, a formula which produces less radical result is used and
  308. intensity drops only inversely proportionally to distance.
  309.  
  310. DIFFUSE LIGHT SOURCES
  311.  
  312. These use Render-Settings/"Lightsamples" to determine the quality of the
  313. soft-shadow they cast. The higher the Render settings/Lightsamples, the
  314. better the quality of shadows generated. If Lightsamples is zero, the
  315. light source is treated as a point light. Intensity is dropped the same
  316. way as the Point light.
  317.  
  318. Line
  319.  
  320. PRIMITIVE: line LIGHT-SOURCE
  321. Creates a diffuse linear light source.
  322. DEFINE: two points of a line.
  323.  
  324. This casts soft-shadows from a linear source the length of the line
  325. created.
  326.  
  327. Wall
  328.  
  329. PRIMITIVE: rectangle LIGHT-SOURCE
  330. Creates a diffuse rectangular light-source.
  331. DEFINE: rectangular plane. The soft-shadows are cast from an area light-
  332. source the size of the rectangle created.
  333.  
  334. Controls/
  335.  
  336. The objects created in this menu do not appear when a scene is rendered.
  337. They are used to create other objects or control various aspects of
  338. functions and methods.
  339.  
  340. The wire-frames for all controls are drawn with a broken line of long
  341. dashes by default.
  342.  
  343. Attribute
  344.  
  345. PRIMITIVE: attribute
  346. This creates an attribute primitive. It does not require any spatial
  347. coordinates, so no pointer input is required. This primitive can, for
  348. example, be used as a parameter for methods when object attributes, such
  349. as motion blur must be animated.
  350.  
  351. Offset
  352.  
  353. PRIMITIVE: offset
  354. Create a primitive for the specified coordinate. Offsets are most commonly
  355. used with animation Methods to define centers of rotations etc.
  356. DEFINE: coordinate.
  357.  
  358. Axis
  359.  
  360. PRIMITIVE: line
  361. Create a line with two points.
  362. DEFINE: start and end coordinates of axis. Axes can be used, for example,
  363. as parameters for animation methods for defining rotations and straight
  364. motions.
  365.  
  366.                             - REFERENCE 1.27 -
  367.  
  368. Coordsys
  369.  
  370. PRIMITIVE: coordsys
  371. Create a set of x,y,z axes.
  372. DEFINE: origin and size. Coordsys primitive is used as a parameter to
  373. animation Methods. It is also very handy for defining the orientation of
  374. input plane of View windows.
  375.  
  376. Figure R1-17: Lines and Curves  (PICTURE: R1-17)
  377.  
  378. Open Line
  379.  
  380. PRIMITIVE: line "polygon"
  381. Create one or more linked lines.
  382. DEFINE: start coordinate and at least one other coordinate. Multiple
  383. points on the line are defined by supplying multiple coordinates. The
  384. function is terminated with <RMB>.
  385.  
  386. The line can be closed/opened with <BACKSPACE> key. In animations,
  387. polygonal lines can be used for producing "sharp edged" motions. For
  388. example, mechanical devices often require motions which are not smoothly
  389. curved. When used as a parameter for freeform surface construction tools,
  390. polygonal lines produce polygonal surfaces.
  391.  
  392. Closed Line
  393.  
  394. PRIMITIVE: line "polygon"
  395. Create three or more lines linked as a polygonal loop.
  396. DEFINE: start coordinate and at least two other coordinates. The function
  397. is terminated with <RMB>. The curve can be opened/closed using <BACKSPACE>
  398. key.
  399.  
  400. Circular Line
  401.  
  402. PRIMITIVE: line "polygon"
  403. Create three or more lines linked as a regular polygonal loop.
  404. NUMERIC: Number of sides to regular polygon.
  405. DEFINE: center and radial size.
  406.  
  407.                             - REFERENCE 1.28 -
  408.  
  409. B-Spline Ctrlp
  410.  
  411. PRIMITIVE: line "B-spline"
  412. Create B-spline by defining control-polygon.
  413. DEFINE: at least 4 coordinates of points on open ended control-polygon of
  414. B-spline.
  415.  
  416. This is one of the basic tools when creating B-spline curves. It allows
  417. the user to define a control polygon which defines the actual smooth
  418. B-spline curve of third degree. The curve tends to automatically be very
  419. smooth when using this curve definition method, but the fact that the
  420. curve itself is dislocated from the control points makes it tricky to use
  421. for the novice user. B-spline curves can be used for defining smooth
  422. motions for animation methods, and as parameters for B-spline freeform
  423. surface construction tools.
  424.  
  425. B-Spline Knot
  426.  
  427. PRIMITIVE: line "B-spline"
  428. Create B-spline by defining knot-points.
  429. DEFINE: 2 or more coordinates of knot-points on B-spline.
  430.  
  431. Figure R1-18: A B-spline Curve Produced from Knot Points  (PICTURE: R1-18)
  432.  
  433. This tool allows the user to define a B-spline curve by defining the
  434. curve's knot points. Because the curve passes through knot points, the
  435. user has more accurate control over the curve. However , the curve may
  436. not always interpolate knot points in expected way.
  437.  
  438. B-Spline Curve
  439.  
  440. PRIMITIVE: line "B-spline"
  441. Create B-spline by defining control-polygon. End points are fixed with
  442. triple-points and curve is drawn interactively.
  443. DEFINE: start-point coordinate, then consecutive points on the control-
  444. polygon. As the cursor is moved, the resultant B-spline curve is drawn.
  445. When terminated, the last coordinate supplied becomes a fixed end-point.
  446. The start and end points of the B-spline polygon are fixed by defining
  447. three points on the control-polygon at the same coordinates (triple-
  448. point).
  449.  
  450. B-Spline Closed
  451.  
  452. PRIMITIVE: line "B-spline"
  453. Create B-spline by defining closed control-polygon.
  454. DEFINE: four or more points of a polygon with closed ends.
  455.  
  456. B-Spline Cir.
  457.  
  458. PRIMITIVE:
  459. line "B-spline" Create circular B-spline by defining closed regular
  460. polygon.
  461. NUMERIC: sides of regular polygon. Entry must be 4 or greater.
  462. DEFINE: center and radial size.
  463.  
  464.                             - REFERENCE 1.29 -
  465.  
  466. B-Spline Helix
  467.  
  468. PRIMITIVE: line "B-spline"
  469. Create helical B-spline.
  470. NUMERIC: number of points on control-polygon and total angular distance of
  471. helix in radians.
  472. DEFINE: center and radial size.
  473.  
  474. Mappings/
  475.  
  476. All the objects created in this sub-menu have a material definition
  477. attached to them when created. They define the type of mapping used to
  478. apply the material properties to the physical objects in the hierarchy.
  479.  
  480. The type of the mapping primitive defines how the absolute space, where
  481. objects are defined, is mapped to material space where material properties
  482. are defined. For example, when using rectangle primitive, the absolute
  483. space is mapped to material space using parallel projection which is fully
  484. defined by the size and the orientation of the rectangle used.
  485.  
  486. See also Material window/Mapping handler description.
  487.  
  488. The material to be mapped to absolute space is referred by a tag "SMAT".
  489.  
  490. The wire-frames for all mapping objects are drawn with a broken line of
  491. short dashes.
  492.  
  493. Default
  494.  
  495. PRIMITIVE: attribute MAPPING
  496. Creates attribute with attached material properties.
  497.  
  498. This enables material properties not requiring any special mapping to be
  499. placed in the hierarchy. This saves on memory and avoids cluttering the
  500. screen with unnecessary wire-frames.
  501. No transformations are applied between  material/absolute spaces (in other
  502. words, the space where materials and objects are defined is the same).
  503. When using textures with this mapping, parallel projection along z-axis
  504. is used.
  505.  
  506. Parallel
  507.  
  508. PRIMITIVE: rectangle MAPPING
  509. Create rectangular mapping.
  510.  
  511. The basic mapping type of the attached material properties will be
  512. parallel. The size and position of the rectangle determines how material
  513. space is moved, rotated and stretched to absolute space where objects are
  514. defined.
  515.  
  516. Cylinder
  517.  
  518. PRIMITIVE: cylinder MAPPING
  519. Create cylindrical mapping.
  520. DEFINE: center and radial size of circular cross-section. Depth is pre-
  521. defined.
  522.  
  523. This mapping method can be used for wrapping textures cylindrically around
  524. objects. The axis of the cylinder corresponds the vertical direction of
  525. the texture. The horizontal direction is bent along the cross-section
  526. circle.
  527.  
  528. Sphere
  529.  
  530. PRIMITIVE:
  531. ellipsoid MAPPING
  532. Creates spherical texture.
  533. DEFINE: center and radial size.
  534.  
  535. Disk
  536.  
  537. PRIMITIVE: ellipse MAPPING
  538. Creates circular texture.
  539. DEFINE: center and radial size.
  540.  
  541.                             - REFERENCE 1.30 -
  542.  
  543. Observers/
  544.  
  545. Viewpoint
  546.  
  547. PRIMITIVE: viewpoint
  548. Create a viewpoint.
  549. DEFINE: two coordinates defining the centers of stereo viewpoint pair.
  550.  
  551. Viewpoint can be used for defining orientation for View windows. If the
  552. menu View/Camera/Camera_View is checked, the orientation for the
  553. corresponding View window is fetched from the viewpoint object, if found.
  554. If the object contains more than one viewpoint, the first one found is
  555. used, unless the viewpoint contains a tag SWND, in which case it is used
  556. only if the contents of the tag matches the name of the View window in
  557. question. This makes it possible to associate different viewpoints with
  558. different View windows. Because viewpoint is just a primitive, it can be
  559. animated like any other object. It is possible to create animations where
  560. the screen contains more than one View window and where each View window
  561. shows the animation from different point of view. The viewpoint primitive
  562. can be used with the aimpoint primitive for fully define the orientation
  563. for the camera. In other words, camera consists of a viewpoint and an
  564. aimpoint.
  565.  
  566. Aimpoint
  567.  
  568. PRIMITIVE: aimpoint
  569. Create an aimpoint.
  570. DEFINE: center.
  571.  
  572. The aimpoint primitive can be used for defining camera direction. The
  573. reason why the camera is divided into two different part is that it makes
  574. it possible to insert aimpoint to any object, and if the object is
  575. animated, the camera always tracks it. This is true for viewpoint too.
  576. Of course, it is possible to place both primitives inside one level
  577. object, in which case, it can be treated just like a single camera. The
  578. tag SWND can be associated with aimpoints as well.
  579.  
  580. Compound Tools/
  581.  
  582. The functions in this section all create multiple visibles all placed
  583. within a new level. All the necessary boolean-operations and other
  584. modifications are carried out on the original visibles to create the
  585. expected composite visible shape.
  586.  
  587. Lathe
  588.  
  589. Create compound-object from various visibles by defining an axis and a
  590. profile.
  591. DEFINE: two end points of axis. Then define a sequence of "curve"
  592. directions and shapes to create the profile.
  593.  
  594. A new direction for the profile curve is started by cancelling the curve
  595. shaping with the <RMB> . This makes it possible to create sharp joints
  596. between object segments. The function is terminated by using the <RMB>
  597. twice.
  598.  
  599. Circular Subdivided
  600.  
  601. Create compound-object from cylinders along subdivided line. The polygonal
  602. line is subdivided using quadric Bezier curves.
  603. NUMERIC: subdivisions per line segment.
  604. DEFINE: circular cross-section, open polygonal line.
  605.  
  606. Rounded Circ. Subd.
  607.  
  608. Create compound-object from cylinders along subdivided line with spheres
  609. at junctions.
  610. NUMERIC: subdivisions per line segment.
  611. DEFINE: circular cross-section, open polygonal line.
  612.  
  613.                             - REFERENCE 1.31 -
  614.  
  615. Sharp Circular
  616.  
  617. Create compound-object from cylinders along line.
  618. DEFINE: circular cross-section, open polygonal line.
  619.  
  620. Rounded Circular
  621.  
  622. Create compound-object from cylinders along line, with spheres at
  623. junctions.
  624. DEFINE: circular cross-section, open polygonal line.
  625.  
  626. Conical
  627.  
  628. Create compound-object by joining defined spheres with cones.
  629. DEFINE: two or more spheres.
  630.  
  631. Conical Subdivided
  632.  
  633. Create compound-object by joining defined spheres with cones, subdividing
  634. between sphere centers. Position and radius for intermediate spheres is
  635. interpolated using quadric Bezier curves.
  636. NUMERIC: subdivisions between centers of spheres.
  637. DEFINE: two or more spheres.
  638.  
  639. Rectangular
  640.  
  641. Create compound-object from rectangular prisms along line, with cylinders
  642. at junctions.
  643. DEFINE: circular cross-section, open polygonal line.
  644.  
  645. Rectangular Subdiv.
  646.  
  647. Create compound-object from rectangular prisms along subdivided line, with
  648. cylinders at junctions.
  649. NUMERIC: subdivisions per line segment.
  650. DEFINE: circular cross-section, open polygonal line.
  651.  
  652. Rectangular Conical
  653.  
  654. Create compound-object by joining defined cylinders with rectangular based
  655. pyramids.
  656. DEFINE: two or more cylinders.
  657.  
  658. Rect.Conical Subd.
  659.  
  660. Create compound-object by joining defined cylinders with pyramids,
  661. subdividing between cylinder centers.
  662. NUMERIC: subdivisions between centers of cylinders.
  663. DEFINE: two or more cylinders.
  664.  
  665. Rounded Polygon
  666.  
  667. Creates a compound plane from a polygon and circle segments.
  668. DEFINE: polygon. The created compound plane is bounded by this polygon.
  669.  
  670. A polygon is created which forms the outer controlling boundary polygonal
  671. plane whose "corners" are rounded with segments from circular planes.
  672. While this bounding polygon is being defined, the resultant polygon and
  673. circle segments which will compose the final plane are shown.
  674.  
  675.                             - REFERENCE 1.32 -
  676.  
  677. The following key bindings are defined during creation:
  678.  
  679. TICK      - define new radius for the current corner.
  680. BACKSPACE - define new radius for arbitrary corner.
  681. <SHIFT>
  682. <TICK>    - new radius for all corners.
  683.  
  684. Rounded Polyhedron
  685.  
  686. Create a compound solid from polyhedron and cylinder segments.
  687. DEFINE: bounding polygon.
  688.  
  689. The bounding polygon defines the rounded polygonal cross-section which is
  690. extruded to a defined depth to form a solid. The level created contains a
  691. polyhedron and the cylindrical segments of the compound solid.
  692.  
  693. Hot keys are similar to Rounded polygon tool.
  694.  
  695. Ellipsed Polygon
  696.  
  697. Create a round edged compound plane from a polygon and ellipse segments.
  698. DEFINE: bounding polygon. The level created contains a polygon visible and
  699. several ellipse segments which boarder all the edges of the polygon.
  700. This forms a compound plane with continuous curved edges.
  701.  
  702. Ellipsed Polyhedron
  703.  
  704. Create a round edged compound solid from a polyhedron and cylinder
  705. segments.
  706. DEFINE: bounding polygon. A polyhedron and the cylindrical segments which
  707. border its edges are created. This is the extruded solid of the ellipsed
  708. polygon defined by the bounding polygon.
  709.  
  710. Join Primitives
  711.  
  712. This creates a set of cut-cones or cut-pyramids to join multi-selected
  713. spheres or cylinders together. Only the new visibles form the compound-
  714. object; the original visibles remain at their original level. If non-
  715. spherical ellipsoids or cylinders of dissimilar depth are used, then the
  716. cut-cones or cutpyramids will use the minimum dimensions of the operands
  717. as a default. Using any visible other than ellipsoids or cylinders will
  718. be ignored by this function.
  719.  
  720. Object-Pixel Tool
  721.  
  722. Create multiple copies of selected objects using pixels from image file.
  723. SELECT: image file
  724. DEFINE: rectangle. The compound-object is created from multiple copies of
  725. the selected objects. The offsets for each of these new objects is taken
  726. by mapping the image file onto the rectangle and taking the coordinates of
  727. each active pixel. Their color is taken from the pixel color. For register
  728. color IFF files pixels of register color 0 do not create objects. With
  729. 24-bit image files all pixels create objects.
  730.  
  731. Freeform/
  732.  
  733. The free-form construction functions take two or more lines selected as
  734. operands by multi-selection. These operands are used to produce a mesh.
  735. If all operands are of one type, then the resultant mesh will be of the
  736. same type. With mixed types of operands, then the mesh will be polygonal
  737. by default. If B-spline operands are used, then there must be four or more
  738. to produce a B-spline mesh.
  739.  
  740.                             - REFERENCE 1.33 -
  741.  
  742. Note that when creating B-Spline surfaces, a large amount of points are
  743. not needed for making objects "smooth", which is the case when creating
  744. objects using polygonal models. Instead, points are needed for
  745. representing details.
  746.  
  747. Mesh
  748.  
  749. PRIMITIVE: mesh
  750. Create rectangular mesh of B-spline curves.
  751. NUMERIC: the number subdivisions of each axis of the mesh.
  752. DEFINE: size of the mesh as a rectangle.
  753.  
  754. Coplanar
  755.  
  756. PRIMITIVE: mesh
  757. Create a mesh from a profile displaced along a sweeping curve.
  758. OPERANDS:
  759. 1st - profile
  760. 2nd - sweeping-curve
  761. The profile is displaced along the sweeping curve and replicated at each
  762. point of the sweeping curve. The resultant profiles are joined
  763. consecutively into a mesh. The profile curves of the mesh remain parallel
  764. to the original profile operand. The displacement is relative, in other
  765. words the profile curve is not pulled to the beginning of the sweeping
  766. curve.
  767.  
  768. Figure R1-19: Coplanar Sweeping  (PICTURE: R1-19)
  769.  
  770. Orthogonal
  771.  
  772. PRIMITIVE: mesh
  773. Create a mesh from a profile displaced along a sweeping curve.
  774. OPERANDS:
  775. 1st - profile
  776. 2nd - sweeping-curve
  777. The profile is rotated to follow the direction of the sweeping-curve while
  778. being displaced. At each point of the sweeping curve, the profile is
  779. replicated. These profiles are joined to form the mesh.
  780.  
  781. Figure R1-20: Orthogonal Sweeping  (PICTURE: R1-20)
  782.  
  783. Rotate
  784.  
  785. PRIMITIVE: mesh
  786. Create a mesh by rotating a profile about an axis.
  787. OPERANDS:
  788. 1st - profile
  789. 2nd - axis of rotation
  790. NUMERIC: number of subdivisions during rotation. The new mesh is created
  791. by rotating the profile about the axis and creating a new profile for each
  792. subdivision specified. The profiles are linked into a mesh.
  793.  
  794.                             - REFERENCE 1.34 -
  795.  
  796. Swing/Move
  797.  
  798. PRIMITIVE: mesh
  799. Create a mesh by rotating a profile about an axis and displacing it using
  800. a third curve.
  801.  
  802. OPERANDS:
  803. 1st - profile
  804. 2nd - axis of rotation
  805. 3rd - displacement-curve
  806.  
  807. The profile is copied once for each point on the displacement-curve. Each
  808. copy is rotated about the axis by the angle between the original profile
  809. and a line through the axis, and the corresponding point on the
  810. displacement-curve. Each copy is also displaced by the relative distance
  811. between the axis and original profile, and the axis and the corresponding
  812. point.
  813.  
  814. Swing/Size
  815.  
  816. PRIMITIVE: mesh
  817. Create a mesh from a profile, an axis and a sizing curve.
  818.  
  819. OPERANDS:
  820. 1st - profile
  821. 2nd - axis of rotation
  822. 3rd - sizing-curve
  823.  
  824. The profile is copied once for each point on the sizing-curve. Each copy
  825. is rotated about the axis by the angle between the original profile and a
  826. line through the axis, and the corresponding point on the sizing-curve.
  827. Each copy is also scaled by the relative distance between the axis and the
  828. original profile, and the axis and the corresponding point.
  829.  
  830. Figure R1-21: Swing/Size  (PICTURE: R1-21)
  831.  
  832.                             - REFERENCE 1.35 -
  833.  
  834. Build from Curves
  835.  
  836. PRIMITIVE: mesh
  837. Multi-select a number of curves to be built into a mesh. The order of
  838. selecting the curves determines the order in which the curves are
  839. assembled. By default, the surface is not closed in "joining" direction,
  840. The function Modify/Freeform/Open&Close can be used for closing the
  841. surface in the ("v") direction.
  842.  
  843. Figure R1-22: Build_From_Curves  (PICTURE: T1-22)
  844.  
  845. Mesh-Pixel Tool
  846.  
  847. PRIMITIVE: mesh
  848. create a mesh using image file.
  849. FILE: name of image file.
  850. DEFINE: rectangle. The image file will be scaled to the rectangle. A mesh
  851. will be constructed with a point for each pixel of the image file. The
  852. height of each point above the base level is relative to the intensity of
  853. the corresponding pixel.
  854.  
  855. Fractals/
  856.  
  857. Landscape
  858.  
  859. Figure R1-23: Fractal Landscape Generator  (PICTURE: R1-23)
  860.  
  861. Create a mesh representing a fractal "landscape".
  862.  
  863. REQUESTER: fractal generator information
  864. DEFINE: rectangle.
  865.  
  866. Gadgets :
  867.  
  868. u Direction, v Direction
  869.  
  870. These fields define the resolution for the final landscape mesh. In order
  871. to get the best possible result, the value of these fields should be
  872. 2^n+1, where "n" is integer.
  873.  
  874. Depth
  875. This defines the relative depth of the landscape to be created. The higher
  876. the value, the higher the profile.
  877.  
  878. Random
  879. Defines how random the result is. The higher the value, the greater the
  880. randomness.
  881.  
  882.                             - REFERENCE 1.36 -
  883.  
  884. Figure R1-24: Fractal Tree Generator  (PICTURE: R1-24)
  885.  
  886. Power
  887.  
  888. Defines the shape. If the value is large, mountain peaks are sharp and
  889. valleys are flat. If small, then mountain peaks are flat and valleys deep.
  890.  
  891. Seed
  892.  
  893. Seed value for random factor. Using identical seeds allows identical
  894. landscapes to be created.
  895.  
  896. Tree
  897.  
  898. Create a fractal "tree" from spheres and cut-cones and optionally a
  899. selected object.
  900.  
  901. REQUESTER: fractal generator information
  902. DEFINE: sphere for position and size of first "node", then two coordinates
  903. to define direction of growth and length of the first branches.
  904.  
  905. If an object is selected, then this will be used as the "leaves" at the
  906. ends of the last branches.
  907.  
  908. The basic idea for controlling all the properties of a tree is relatively
  909. simple. There are some initial settings, like depth and branch count which
  910. have several modifiers applied, like random and depth modifier, in order
  911. to get the final value for a particular property of the tree.
  912.  
  913.                             - REFERENCE 1.37 -
  914.  
  915. For example, the following diagram shows how the number of sub-branches is
  916. defined for each node:
  917.  
  918. Initial      - This is an initial value defined by "Branch Init"
  919.    |           field in the Fractal tree requester.
  920.    |
  921.   \/
  922.  
  923. Random       - Initial value is passed to random modifier, which uses the
  924.    |           value of the gadget "Branches_Rand" to define how much to
  925.    |           randomize the initial value.
  926.    |
  927.   \/
  928.  
  929. Depth        - Depth modifier changes the value according to the value of
  930.    |           "Branch Depth" The lower the level of the node, the higher
  931.    |           the number of sub-branches.
  932.    |
  933.   \/
  934.  
  935. Branch       - Branch modifier modifies the passed value according to the
  936.    |           branch in question. This makes it possible to define fewer
  937.    |           sub branches for outer parts of the tree.
  938.    |
  939.   \/
  940.  
  941. Actual       - The actual number of sub branches for the node in question.
  942.  
  943.              level 2
  944.    \/\/\/\/  level 1
  945.     \/  \/
  946.      \  /    level 0
  947.       \/
  948.  
  949. The depth of this tree is 3 and branch count is 2.
  950.  
  951. Depth Fields:
  952.  
  953. There are three fields used for defining the depth of each branch. The
  954. depth of a branch dictates how many times it can branch again.
  955.  
  956. Init
  957.  
  958. This value defines an initial depth for all branch instances in a tree.
  959.  
  960. Rand
  961.  
  962. Defines a random scale used for modifying initial depth value. If a value
  963. of this gadget is 0, the depth is not affected randomly. If 100, the depth
  964. of a tree can vary +/- 0.5 *depth.
  965.  
  966. Branch
  967.  
  968. Defines how the branch in question affects the depth, i.e. how the tree to
  969. be created is balanced. If zero, then either the central or first branch
  970. of each node has the greatest depth. If 50, all branches are treated
  971. equally and if 100, the outer or last branches of each node has the
  972. greatest depth.
  973.  
  974. Branch Fields:
  975.  
  976. These fields define how the number of branches is defined. This
  977. information is evaluated individually for each branch of a tree.
  978.  
  979. Init
  980.  
  981. This field defines the initial number of branches per node.
  982.  
  983. Rand
  984.  
  985. This defines how randomness affects the initial number of branches. The
  986. new branch count can vary up to +/- 0.5*initial_count.
  987.  
  988.                             - REFERENCE 1.38 -
  989.  
  990. Depth
  991.  
  992. This field defines how the level of the node in question determines the
  993. number of sub-branches to be created. If 0, it has no affect at all. If
  994. 100, the number of branches is reduced from level to level using the
  995. following formula:
  996.  
  997.      level/(level + 1)^2*f/100*count,
  998.  
  999. Where: f is the value of this gadget.
  1000.  
  1001. Thus, if level is 0, or the factor "f" is zero, the level of the node has
  1002. no effect over the number of sub-branches. In other words, the higher the
  1003. level, the fewer the number of branches.
  1004.  
  1005.      O   O
  1006.       \ /   Level 1: 2 sub branches
  1007.        O
  1008.        |
  1009.      O | O
  1010.       \|/   Level 0: 3 sub branches
  1011.        O
  1012.  
  1013. Branch
  1014.  
  1015. Define how the branch in question determines the number of sub-branches to
  1016. be created. If 50, the tree is balanced (each branch will contain equal
  1017. number of sub-branches). If 0, the central or first branch of each node
  1018. has the highest number of sub-branches.
  1019.  
  1020. Size fields:
  1021.  
  1022. These fields define how the size of the node is defined.
  1023.  
  1024. Depth
  1025.  
  1026. Initial sizing factor. Defines how the size of each node is reduced for
  1027. each new level. A value of 10 means the size for new nodes in the next
  1028. level will be 10% of the size of the nodes in the current level.
  1029.  
  1030. Rand
  1031.  
  1032. Random factor. If zero, then there is no randomness. If 100, size can vary
  1033. +/- size/2.
  1034.  
  1035. Branch
  1036.  
  1037. Define how the branch in question modifies the size of the node to be
  1038. created. This field can be used for creating trees with inner or first
  1039. nodes thicker than outer or last nodes.
  1040.  
  1041. Length Fields:
  1042.  
  1043. Depth Defines how the length of branches is reduced from level to level.
  1044.  
  1045. Rand
  1046.  
  1047. Random factor for length.
  1048.  
  1049.  
  1050. Branch
  1051.  
  1052. How the branch in question affects the length of the branch.
  1053.  
  1054. Direction Fields:
  1055.  
  1056. Direct Hor, Vert, Norm
  1057.  
  1058. These fields define the directions for branches to be created. The
  1059. direction for a new branch is calculated by using vector addition, where
  1060. the three vectors are Norm, Hor and Vert. Norm is the direction of the
  1061. current branch and Hor and Vert are perpendicular to this. The
  1062. mathematical formula for this vector addition is:
  1063.  
  1064.      newdir = norm*current_dir+hor*sin(x)+vert*cos(x),
  1065.  
  1066. Where: Norm, Hor and Vert are the values of the corresponding gadgets on
  1067. the requester, and x is value representing the direction of the current
  1068. branch.
  1069.  
  1070.                             - REFERENCE 1.39 -
  1071.  
  1072. Rand
  1073.  
  1074. Define random factor for the length of the H or, Vert and Norm vectors.
  1075.  
  1076. Gravity
  1077.  
  1078. Define how much "gravity" pulls down the branches for each new level. If
  1079. 0, gravity is zero too. If 1 00, gravity pulls down the branches by the
  1080. length of the first branch.
  1081.  
  1082. Rotate Fields:
  1083.  
  1084. These fields define how much branches are rotated for each new level.
  1085.  
  1086. Level
  1087.  
  1088. The maximum rotation is half a revolution.
  1089.  
  1090. Random
  1091.  
  1092. Random factor for rotation.
  1093.  
  1094. Other Gadgets:
  1095.  
  1096. Subdivision
  1097.  
  1098. This field defines how many spheres and cut-cones are used for creating
  1099. branches. If 1, all nodes are connected using one cut-cone. The higher the
  1100. value, the smoother the the result. Branches are smoothed using a cubical
  1101. B-spline curve.
  1102.  
  1103. Branch Color
  1104.  
  1105. Define the color for all visibles forming the body of the tree created.
  1106. The contents of this string are passed to EVAL to define the color for the
  1107. spheres and cut-cones of the tree. The following variables are defined
  1108. during evaluation:
  1109.  
  1110. R, G, B - Color for the object to be created.
  1111.  
  1112. x, y, z - COG of the object to be created
  1113.  
  1114. I       - Hierarchy level (the level of the root is 0)
  1115.  
  1116. b       - Number of the branch in question. The range is 0.0 to 1.0, where
  1117.           the first branch in a node is 0.0 and the last is 1.0. If used,
  1118.           then the central branch will be -1.0
  1119.  
  1120. s       - Subdivision index for branches. If subdivision is 1, all
  1121.           branches consists of only one cut-cone and the value of "s" is
  1122.           constant (1 ). If subdivision is 1 0, each cut-cone has a
  1123.           separate index, where the index for last cut-cone created for
  1124.           the branch in question is 10.
  1125.  
  1126. If this gadget is empty, current color is used.
  1127.  
  1128. Leaf Color
  1129.  
  1130. This string is passed to EVAL in order to define a color for the leaves.
  1131. If this gadget is empty, the original colors of leaf objects are used
  1132. instead.
  1133.  
  1134. R, G, B - Color for the leaf to be created.
  1135.  
  1136. x, y, z - COG of the object to be created
  1137.  
  1138. I       - Hierarchy level (the level of the root is 0)
  1139.  
  1140. b       - Number of branch to which the leaf is attached.
  1141.  
  1142. If this string is empty, the color of the selected objects is used.
  1143. Example Formula:
  1144.  
  1145.      R=127+128*sin(b), G=127+128*cos(b), B=127+128*cos(b)
  1146.  
  1147.                             - REFERENCE 1.40 -
  1148.  
  1149. Note:
  1150. For both these color evaluations, the only variables which affect the
  1151. visibles in question are R, G, & B. Although the other variables can be
  1152. assigned new values, this only affects their use in the expressions. It
  1153. does not modify the visibles.
  1154.  
  1155. Central
  1156.  
  1157. If set, then the various "Branch" gadgets work with the "central" branch
  1158. of a node e.g. 3rd branch of a group of 5. Otherwise, they work with the
  1159. first branch.
  1160.  
  1161. Trunk
  1162.  
  1163. If set, then a main trunk will be created and the first node will be at
  1164. the top to form a "tree", otherwise it will be a "bush".
  1165.  
  1166. Boolean/
  1167.  
  1168. OR
  1169. AND
  1170. AND NOT
  1171. AND with PAINT
  1172. AND NOT with PAINT
  1173.  
  1174. Figure R1-25: Boolean Operations  (PICTURE: R1-25)
  1175.  
  1176. These all work by creating a new object from the selected objects. At
  1177. least one object must be selected using multi-selection. The first object
  1178. selected is used as the target, and the rest of the selection are used as
  1179. the operands. The target and operands are copied to a new level which has
  1180. its AND attribute set.
  1181.  
  1182. For AND NOT, the operands each have their INVERTED attribute set. The
  1183. operands of AND with PAINT have PAINTS set, and AND NOT with PAINT sets
  1184. both these attributes for the operand objects.
  1185.  
  1186.                             - REFERENCE 1.41 -
  1187.  
  1188. Rethink
  1189.  
  1190. When applied to selected booleans, this function re-calculates the wire-
  1191. frame to more closely resemble the surface of the objects produced as a
  1192. result of the boolean-operator.
  1193.  
  1194. Rethink All
  1195.  
  1196. This function also produces new wire-frame for booleans. It also scans
  1197. through sub-objects of the selected-objects, and re-calculates the wire-
  1198. frames for all booleans.
  1199.  
  1200. Figure R1-26: Rethinking Boolean Wire-frame  (PICTURE: R1-26)
  1201.  
  1202.                             - REFERENCE 1.42 -
  1203.  
  1204. 1.3 MODIFY
  1205.  
  1206. Linear/
  1207.  
  1208. All these functions are started and completed with <LMB> or terminated
  1209. with <RMB>.
  1210.  
  1211. Move
  1212.  
  1213. DEFINE:
  1214. handle coordinate, then new position A reference coordinate is defined,
  1215. then the selected objects can be moved by this "handle" to a new position.
  1216.  
  1217. Move COG
  1218.  
  1219. DEFINE:
  1220. new position for COGs When all the selected objects have their Center-off-
  1221. Gravity (COG) moved to the cursor position after the first <LMB> click, a
  1222. new position for the COGs is then selected. If objects are multi-selected,
  1223. then all their COGs are moved to the same coordinate and this causes them
  1224. to overlap. If a level containing sub-objects is selected, then their
  1225. COG's are averaged to find the COG of the whole group.
  1226.  
  1227. Size 2D
  1228.  
  1229. DEFINE:
  1230. sizing-center, sizing handle then new size A center about which the sizing
  1231. of the selected objects will take place is first specified, and then a
  1232. reference coordinate or "handle". As the cursor is moved relative to the
  1233. sizing center, the objects are re-scaled in proportion to the distance
  1234. between the center and the handle, and the current cursor position and the
  1235. center. The re-scaling only  takes place about the coordinates axes of the
  1236. Input-plane.
  1237.  
  1238. Size 3D
  1239.  
  1240. DEFINE:
  1241. sizing-center, sizing handle then new size
  1242.  
  1243. This works in an identical way to Size-2D, only the re-scaling is applied
  1244. to all three coordinate axes of the objects.
  1245.  
  1246. Stretch
  1247.  
  1248. DEFINE:
  1249. sizing-center, sizing handle then new sizes
  1250.  
  1251. This works in a similar way to Size _2D, only the re-scaling parameters
  1252. are evaluated independently for each of the two Inputplane axes before
  1253. being applied to the objects.
  1254.  
  1255. Extend
  1256.  
  1257. DEFINE:
  1258. extension-center and direction, then extension amount
  1259.  
  1260. The fixed center of the extension is defined first, then the direction in
  1261. which the extension of the objects is to take place. Moving the cursor
  1262. relative to the fixed point determines the degree of extension.
  1263.  
  1264. Rotate
  1265.  
  1266. DEFINE:
  1267. rotation-center and handle, then amount of rotation
  1268.  
  1269. The center about which the objects are to be rotated is first specified,
  1270. then a reference point. Moving the cursor about the rotation-center
  1271. controls the amount of rotation applied to the target objects.
  1272.  
  1273.                             - REFERENCE 1.43 -
  1274.  
  1275. Mirror
  1276.  
  1277. DEFINE:
  1278. fixed-point and end-point on mirroring axis, then final position of axis
  1279. end point.
  1280.  
  1281. The axis about which the objects is to be mirrored is defined in two
  1282. stages. First define the fixedpoint and endpoint of the axis. The axis can
  1283. then be rotated about the fixed-point until the final position is
  1284. selected.
  1285.  
  1286. Shear
  1287.  
  1288. DEFINE:
  1289. two points on shearing-axis, handle, and then degree and direction of
  1290. shear.
  1291.  
  1292. The shearing-axis determines the direction along which the shearing
  1293. modification will be applied. Then select a handle coordinate. Moving the
  1294. cursor relative to this coordinate defines the direction and amount of
  1295. shearing to be applied to the selected objects.
  1296.  
  1297. Rot&Ext
  1298.  
  1299. DEFINE:
  1300. rotation-center with extension fixed-point, rotation handle with
  1301. extension-direction and then amount of rotation and extension to be
  1302. applied.
  1303.  
  1304. This is a combination of the rotation and extension modification
  1305. functions. The first coordinate defined is used as both the center for the
  1306. rotation function and the fixedpoint for the extension. The second
  1307. coordinate defines the rotation handle and the direction for the
  1308. extension. Moving the cursor allows the amount of each modification to be
  1309. applied to the objects to be determined.
  1310.  
  1311. Deform
  1312.  
  1313. DEFINE:
  1314. fixed-point, deformation-direction and then degree of deformation.
  1315.  
  1316. This function works in a similar way to extend. The extension of the
  1317. objects dimensions along the deformation-direction is matched by the
  1318. inverse amount of extension to the objects dimensions perpendicular to
  1319. this.
  1320.  
  1321. Structure/
  1322.  
  1323. Cut
  1324.  
  1325. Remove selected objects from hierarchy and place in clip-buffer.
  1326.  
  1327. Copy
  1328.  
  1329. Copy selected objects to clip-buffer.
  1330.  
  1331. Paste
  1332.  
  1333. The contents of the clip-buffer are pasted to the bottom of the current
  1334. level.
  1335.  
  1336. Delete
  1337.  
  1338. Delete selected objects from hierarchy. This does not alter the clip-
  1339. buffer.
  1340.  
  1341. Duplicate
  1342.  
  1343. Copy selected objects and paste to hierarchy. The copy is left in the
  1344. clip-buffer.
  1345.  
  1346.                             - REFERENCE 1.44 -
  1347.  
  1348. Swap
  1349.  
  1350. Cut currently selected objects, reverse the order in which they were
  1351. selected, and paste them back to the corresponding locations in the
  1352. hierarchy. This function does not use nor affect the clip buffer in any
  1353. way.
  1354.  
  1355. PrOperties/
  1356.  
  1357. Color
  1358.  
  1359. The color of the selected objects becomes the RGB values of the current-
  1360. color. If the <SHIFT> key is held down when this function is activated,
  1361. the modal color requester is opened and the color of the first selected
  1362. object is shown.
  1363.  
  1364. Name
  1365.  
  1366. A text requester carrying the name of the first selected object is opened.
  1367. The name can then be edited. The maximum length for an object name is 16
  1368. characters. All multi-selected objects are renamed to the specified name.
  1369.  
  1370. Attributes
  1371.  
  1372. Open Attributes requester to modify the attributes of selected objects.
  1373. Multi-selecting objects displays the attribute settings for the first
  1374. object; confirming changes with OK changes the attributes of ALL multi-
  1375. selected objects to the chosen settings.
  1376.  
  1377. Gadgets of Attributes Requester:
  1378.  
  1379. AND/OR
  1380.  
  1381. These control whether a boolean AND or a boolean OR operation is to be
  1382. used for this object. This means that all objects inside a level have
  1383. this boolean operator applied.
  1384.  
  1385. Inverted
  1386.  
  1387. If set, then everything outside of the volume of the objects is used for
  1388. boolean operations.
  1389.  
  1390. Paints
  1391.  
  1392. The surface properties of the objects are applied to intersecting surfaces
  1393. in boolean operations when this attribute is set.
  1394.  
  1395. WF-Invisible
  1396.  
  1397. Objects wire-frames are invisible if set.
  1398.  
  1399. RT-Invisible
  1400.  
  1401. If set, then the object will not visible when rendered.
  1402.  
  1403. Mapping
  1404.  
  1405. Setting this allows any primitive to be used as a texture. This means that
  1406. sector-visibles can be used as textures, but only rectangles, ellipsoids,
  1407. cylinders and circles will have their geometry projected appropriately.
  1408. If this flag is set for a level or a link, then the Rendering Engine will
  1409. scan the object for mappings.
  1410.  
  1411.                             - REFERENCE 1.45 -
  1412.  
  1413.  
  1414. Protected
  1415.  
  1416. When set, the object is not affected by ANY modifications other than
  1417. direct hierarchy modifications such as Cut and Delete.
  1418.  
  1419. Motion-Blur
  1420.  
  1421. Setting this attribute means that Motion Blur will be evaluated for this
  1422. object during rendering, provided that Animation Settings/"Samples" is
  1423. set greater than 0.
  1424.  
  1425. Light-source
  1426.  
  1427. When set, an object is a light. An offset becomes a light-point, an axis
  1428. (two point line) becomes a light-line and a rectangle a light-wall). All
  1429. other primitives are treated as lightpoints with their COG as the source.
  1430.  
  1431. Hollow
  1432.  
  1433. Objects will be hollow if set.
  1434.  
  1435. No 1st BP
  1436.  
  1437. Visible surface of 1 st bounding-plane is removed if set.
  1438.  
  1439. No 2nd BP
  1440.  
  1441. Visible surface of 2nd bounding-plane is removed if set.
  1442.  
  1443. Infinite
  1444.  
  1445. Actual bounding planes are removed if set.
  1446.  
  1447. Scene
  1448.  
  1449. If set, then objects only visible via reflection or refraction.
  1450.  
  1451. Not Reflected
  1452.  
  1453. The objects will reflect but not be reflected if this attribute set.
  1454.  
  1455. Matte
  1456.  
  1457. The objects will always return the background color. This effectively
  1458. means they mask any objects behind them as though they were behind part
  1459. of the background.
  1460.  
  1461. Cast Shadows
  1462.  
  1463. This attribute allows specific visibles and lights to be removed from
  1464. shadow calculations. It is set by default, but if un-set, then affected
  1465. lights will not cast shadows from any visibles, and any visibles affected
  1466. by this attribute will not cast shadows from any lights.
  1467.  
  1468. Alpha Channel
  1469.  
  1470. Open a modal requester allowing user to define new value for Alpha channel
  1471. property for selected objects. The Alpha channel of the first selected
  1472. object is shown when the requester is opened.
  1473.  
  1474. Tags
  1475.  
  1476. This enables tags to be added or modified for selected objects in sequence
  1477. using the Tag-requester.
  1478.  
  1479. In REAL 3D, tags are used for expanding object and material data
  1480. structures which may be necessary e.g. when creating user defined methods
  1481. or procedural materials.
  1482.  
  1483. Tag requester shows a list of the tags defined for the current object.
  1484. Selecting from this list makes the Tag available in the edit box. Either
  1485. the Tag-ID or its Tag-Values can be edited. Pressing <ENTER> updates the
  1486. list.
  1487.  
  1488.                             - REFERENCE 1.46 -
  1489.  
  1490. Gadgets of the Tag Requester:
  1491.  
  1492. DEL
  1493. Deletes the current tag from the list.
  1494.  
  1495. ADD
  1496. If the edit box is shaded, then this gadget makes it possible to enter
  1497. text for a new gadget. When text has been entered, using this gadget adds
  1498. the text to the list.
  1499.  
  1500. The Tag ID will be checked to see if its first character is a valid type.
  1501.  
  1502. Valid Tag Types:
  1503.  
  1504.      C, D, F, I, M, S & V
  1505.  
  1506. Any Tag-Values follow the Tag ID and are separated from it and each other
  1507. by <SPACE>. The length of a Tag ID is restricted to four characters, the
  1508. first of which must be a valid type.
  1509.  
  1510. Animation
  1511.  
  1512. The animation properties of the selected objects can be changed with the
  1513. Animation Properties Requester.
  1514.  
  1515. Figure R1-27: Animation Properties Requester  (PICTURE: R1-27)
  1516.  
  1517. This has five numeric gadgets to define Start Time, End Time, Phase,
  1518. Frequency and Method Time. For a method to function correctly, Start Time
  1519. cannot be after End Time, but Phase can be any Time value and Frequency
  1520. any positive value. "Time" defines the local Method Time for a method in
  1521. its current state. Confirming new settings updates the VTIS, VTIE, VPHS
  1522. and VFRQ tags.
  1523.  
  1524. Start Time
  1525.  
  1526. This defines the time before which the method will be inactive.
  1527.  
  1528. End Time
  1529.  
  1530. This defines the time after which the method will be inactive.
  1531.  
  1532. The method will carry out the whole of its evaluation during the period
  1533. from Start Time to End Time.
  1534.  
  1535. Method Action
  1536.  
  1537.       ^
  1538. 1.0 I |         ____>
  1539.       |        /
  1540.       |       /
  1541.       |      /
  1542.       |     /
  1543.       |____/
  1544.       |
  1545. 0.0 + +-------------->
  1546.       Time ^   ^
  1547.            |   |
  1548.          VTIS  |
  1549.               VTIE
  1550.  
  1551. Phase
  1552.  
  1553. This controls the "phase relationship" between the method and parent time.
  1554. In effect, it is an offset, so instead of starting from Method-Time = 0.0,
  1555. it will start from the value specified by "Phase".
  1556.  
  1557.                             - REFERENCE 1.47 -
  1558.  
  1559. Frequency
  1560.  
  1561. This acts as a multiplier applied to the time passed to the method via the
  1562. animation message. Increasing or decreasing Frequency increases or
  1563. decreases the rate at which method carries out its actions. If it is
  1564. decreased. so the resulting method time is less than 1.0, then the method
  1565. will only carry out the specified fraction of its actions.
  1566.  
  1567. Method Time
  1568.  
  1569. The current local method time. This requester also contains a list
  1570. selector to allow the method type to be attached to the selected objects.
  1571. Internally, this defines the SMTH tag.
  1572.  
  1573. If the method type is "NONE", then although the tags for the Time
  1574. properties will be created or modified, this will not affect how the
  1575. Animation System evaluates the objects.
  1576.  
  1577. Animation Method Types:
  1578.  
  1579.      NONE
  1580.      COLLISION
  1581.      CONTROL CURVES
  1582.      CREATION
  1583.      DIRECTED FORCE
  1584.      DIRECTION
  1585.      FRICTION
  1586.      INT COLLISION
  1587.      INV KINEMATIC
  1588.      MORPHING CLOSED
  1589.      MORPHING OPEN
  1590.      MOVE & DIR
  1591.      PATH
  1592.      PROCESSOR
  1593.      RADIAL FORCE
  1594.      ROTATION
  1595.      RPL
  1596.      SIMPLE SKELETON
  1597.      SIZE
  1598.      SKELETON
  1599.      STRETCH
  1600.      SWEEP
  1601.      TANGENT FORCE
  1602.      TRANSFORM
  1603.      WAVE
  1604.  
  1605. The method type is used to specify how an object is evaluated by the
  1606. Animation system. Each method requires a certain hierarchical syntax in
  1607. order for it to be valid. The syntax for each method is described in
  1608. detail in the reference chapter 2.
  1609.  
  1610. Replace Tags
  1611.  
  1612. Allows the tags of selected objects to be modified collectively. The tag
  1613. to be modified is selected using the requester. The Tag ID and Tag values
  1614. can then be edited. All tags with identical Tag ID and Tag Value are
  1615. replaced with the edited values.
  1616.  
  1617. e.g. Material references "SMAT wood" can be changed to "SMAT marble"
  1618.  
  1619. The following properties are evaluated by certain methods for particle
  1620. animation. Some of them define new tags which override default object
  1621. properties.
  1622.  
  1623. COG
  1624.  
  1625. DEFINE: coordinate for new COG
  1626. TAG: MCOG
  1627.  
  1628. The COGs of the selected objects are changed to the the defined
  1629. coordinate. The COG is the reference point used by the Modify/Linear/Move
  1630. COG function. Also Skeletonal control, particle system, Modify/About_COGs/
  1631. xxx and Modify/COGs/xxx functions use this attribute.
  1632.  
  1633. Direction
  1634.  
  1635. DEFINE: coordsys
  1636. TAG: DDIR DDIV
  1637.  
  1638.                             - REFERENCE 1.48 -
  1639.  
  1640. This changes the direction for the selected objects to those of the
  1641. defined coordsys. Direction is needed for:
  1642.  
  1643. - skeleton methods
  1644.  
  1645. - spin becomes fully defined only when associated with direction
  1646.  
  1647. - when using the function Obj. Space to View
  1648.  
  1649. Velocity
  1650.  
  1651. DEFINE: axis
  1652. TAG: VVEL
  1653.  
  1654. The new velocity of the objects are defined by the direction and length of
  1655. the defined axis. Velocity means how much object is moved in one second.
  1656. Velocity is used by particle system oriented methods.
  1657.  
  1658. Spin
  1659.  
  1660. NUMERIC: three values in radians
  1661. TAG: VSPI
  1662.  
  1663. The spin (angular velocity) of the objects are given the values specified
  1664. by the user. Spin defines how fast the object is rotating. The first value
  1665. defines how fast the object is rotating around VHOR axis, second around
  1666. VVER and third defines the spin around the vector perpendicular to VHOR
  1667. and VVER.
  1668.  
  1669. Size
  1670.  
  1671. NUMERIC: scalar value in Absolute-Spatial-Coordinates
  1672. TAG: FSIZ
  1673.  
  1674. The default size for the objects is redefined. This is the size value used
  1675. by COLLISION, INT COLLISION and FRICTION methods. For example, the
  1676. collision detection system uses the size for detecting if the collision
  1677. between objects is possible or not.
  1678.  
  1679. Bend Local/
  1680.  
  1681.      Move_2D
  1682.      Move_3D
  1683.      Move_Radial
  1684.      Size_2D
  1685.      Size_3D
  1686.      Size_Radial
  1687.  
  1688. Bend Global/
  1689.  
  1690.      Move_2D
  1691.      Move_3D
  1692.      Move_Radial
  1693.      Size_2D
  1694.      Size_3D
  1695.      Size_Radial
  1696.  
  1697. Bend Endp./
  1698.  
  1699.      Move_2D
  1700.      Move_3D
  1701.      Move_Radial
  1702.      Size_2D
  1703.      Size_3D
  1704.      Size_Radial
  1705.  
  1706. Bend Linear/
  1707.  
  1708.      Move_2D
  1709.      Move_3D
  1710.      Move_Radial
  1711.      Size_2D
  1712.      Size_3D
  1713.      Size_Radial
  1714.  
  1715. All the free form bending functions work in similar ways. They are
  1716. normally used for modifying free forms. If other than free forms are
  1717. modified, only COGs are affected. A bending axis is defined with two
  1718. points, then a handle coordinate is defined. After the degree of effect
  1719. has been decided, the function is completed. The bending function effect,
  1720.  
  1721.                             - REFERENCE 1.49 -
  1722.  
  1723. defined below, determines how the bending axis is used to determine the
  1724. effect interval. This selects which points of the freeforms will be
  1725. affected. The effect interval is the volume bounded by two planes at each
  1726. end of the bending axis and orthogonal to the axis.
  1727.  
  1728. Bending Function Effects:
  1729.  
  1730. Local
  1731.  
  1732. Only those points within the interval are affected.
  1733.  
  1734. Global
  1735.  
  1736. All points are affected. Those within the interval are affected with the
  1737. direction of transformation, those outside in the opposite direction.
  1738.  
  1739. End_Point
  1740.  
  1741. All the points from the plane through the first end point and beyond are
  1742. affected. The degree of effect increases progressively away from this
  1743. first plane.
  1744.  
  1745. Linear
  1746.  
  1747. All points are affected with linear shear-like functions. The bending axis
  1748. determines the direction perpendicular to the effect.
  1749.  
  1750. The actual function type determines how the selected points are
  1751. transformed.
  1752.  
  1753. Move_2D
  1754.  
  1755. The displacement of the points is independent of the distance from the
  1756. point to the bending axis and its position in the bending interval.
  1757.  
  1758. Move_3D
  1759.  
  1760. Although the displacement is independent of the distance from the point to
  1761. the bending axis, the depth of the point within the bending interval is
  1762. treated in the same way as its distance along the bending axis.
  1763.  
  1764. Move_Radial
  1765.  
  1766. The displacement is independent of the distance to the bending axis but
  1767. increases radially away from the axis.
  1768.  
  1769. Size_2D
  1770.  
  1771. The displacement increases the further the point is from the bending axis
  1772. but is not affected by its depth within the interval.
  1773.  
  1774. Size_3D
  1775.  
  1776. The displacement is affected equally by the distance of the point from the
  1777. axis and its depth within the interval.
  1778.  
  1779. Size_Radial
  1780.  
  1781. The effect increases with the distance of the point radially from the
  1782. bending axis
  1783.  
  1784. Non-linear/
  1785.  
  1786. There are four different types of Non-linear spatial transformations. All
  1787. of them have a radial interval of effect.
  1788.  
  1789. Move
  1790.  
  1791. DEFINE: end point and center point Size
  1792. DEFINE: center point and end point
  1793.  
  1794.                             - REFERENCE 1.50 -
  1795.  
  1796. Stretch
  1797.  
  1798. DEFINE: center point and end point
  1799.  
  1800. Rotate
  1801.  
  1802. DEFINE: center-point and end-point
  1803.  
  1804. Each of these types can use one of the following control forms:
  1805.  
  1806.      * Parabola
  1807.      * Linear
  1808.      * Circle
  1809.      * Sine
  1810.      * Curve
  1811.  
  1812. The Non-linear transformation functions take freeforms as their operands.
  1813.  
  1814. The function type is applied to the points in the operands non-linearly
  1815. over the interval of effect. The degree of effect of the function type
  1816. depends upon the distance of the target point from the center point and a
  1817. scaling factor derived from a control curve. The scaling factor is
  1818. calculated by taking the distance of the target point from the center
  1819. point and using this to evaluate a point along the control curve from its
  1820. start. This control point is then projected perpendicularly onto an axis
  1821. and the scaling factor is this distance.
  1822.  
  1823. Pre-defined Control Forms
  1824.  
  1825. For the Linear, Circle, Sine & Parabola forms the control curve is defined
  1826. internally.
  1827.  
  1828. For example, using the Circle form of Modify/Non-linear/Move, the scaling
  1829. factor for each point in the operand is the perpendicular distance from
  1830. the axis to the point around the circumference of the circle which
  1831. corresponds to the distance of the target point to the defined center
  1832. point. The distance of the point is normalized, so that the full radius of
  1833. the effect of the function is the circumference of the control circle.
  1834.  
  1835. Curve Form
  1836.  
  1837. The Curve form uses a TRANSFORM method defined by the user, and selected
  1838. with /Set_Tool.
  1839.  
  1840. Because the scaling factor is derived by evaluating ALONG the control-
  1841. curve, the profile of the points being modified does NOT match the curve.
  1842.  
  1843. Set Tool
  1844.  
  1845. Select the object to be used as a tool by the Non-Linear functions Curve
  1846. form. This object must be a TRANSFORM method.
  1847.  
  1848. Special/
  1849.  
  1850. Project To Object
  1851.  
  1852. DEFINE: Two points, which define the projection direction and the
  1853. projection distance.
  1854.  
  1855. This function projects the operands onto a defined object.
  1856.  
  1857. The function takes two or more operands. The first operand is used as a
  1858. target, onto which the rest of the operands are projected. The operands
  1859. to be projected can be:
  1860.  
  1861. 1. primitives; the function moves their COGs the distance defined by the
  1862.    given two points, unless the COGs collide to the target object (The
  1863.    first operand) earlier.
  1864.  
  1865. 2. freeforms, including groups from a larger mesh. The control points of
  1866.    freeforms are moved independently the amount specified by the given two
  1867.    points, unless they collide to the target object (the first operand)
  1868.    earlier.
  1869.  
  1870.                             - REFERENCE 1.51 -
  1871.  
  1872. Inverse Kinematic
  1873.  
  1874. DEFINE: coordinate
  1875.  
  1876. This function can take one or more lines as its operands and moves the end
  1877. points with the pointer while applying Inverse Kinematic Evaluation. This
  1878. means the line segments will behave like mechanical linkages with rotary
  1879. joints at each point. The start point is fixed and never moves.
  1880.  
  1881. COGs/
  1882.  
  1883.      Size_2D
  1884.      Size_3D
  1885.      Stretch
  1886.      Extend
  1887.      Rotate
  1888.      Mirror
  1889.      Shear
  1890.      Rot&Ext
  1891.  
  1892. The above functions work in the same way as their linear counterparts,
  1893. except the COG's of the selected objects are used as the operands.
  1894.  
  1895. About COGs/
  1896.  
  1897.      Size_2D
  1898.      Size_3D
  1899.      Stretch
  1900.      Extend
  1901.      Rotate
  1902.      Mirror
  1903.      Shear
  1904.      Rot&Ext
  1905.  
  1906. The About_COG's functions also work in a similar way to their linear
  1907. equivalents, but the modification is applied to each multi-selected
  1908. object individually, with their COG's being used as ether the center or
  1909. fixed point for the function.
  1910.  
  1911. For example:
  1912. Using About_COGs/Size_3D causes each object to be individually sized on
  1913. all three axes using their COGs as the sizing center and in proportion to
  1914. the amount the cursor is moved away from the defined center relative to
  1915. the defined handle coordinate.
  1916.  
  1917. Freeform/
  1918.  
  1919. Reparametrize
  1920.  
  1921. This doubles the number of knot-points on a B-spline along the directions
  1922. selected, without affecting the shape of the curve.
  1923.  
  1924. Move Knotpoint <RAM>K
  1925.  
  1926. This allows a single knotpoint on a freeform to be selected and moved.
  1927. The <LMB> selects the nearest knotpoint on the freeform.
  1928.  
  1929. Concatenate
  1930.  
  1931. This takes multi-selected freeforms as its operands and creates a new
  1932. freeform by joining them together. The endpoints of each freeform are
  1933. joined to the startpoint of the next in the selection. When the operands
  1934. are meshes, then the start & end-points of the v direction lines are
  1935. joined. The number of points in the u direction of the result mesh will be
  1936. the same number of points as in the u direction of the first mesh in the
  1937. selection. The functions /Swap Direction and /Exchange_u_&_v can be used
  1938. to control how the freeforms are concatenated.
  1939.  
  1940. Swap Direction
  1941.  
  1942. Reverse the direction in which a freeform is evaluated.
  1943.  
  1944.                             - REFERENCE 1.52 -
  1945.  
  1946. Open/Close
  1947.  
  1948. The Open/Close Freeform requester has two gadgets indicating if a freeform
  1949. is currently open or closed in each of the u & v directions. Selecting
  1950. either of these gadgets will reverse the state. Selecting OK applies the
  1951. change to the targets.
  1952.  
  1953. Type
  1954.  
  1955. Change how the data of a freeform is to be interpreted. Both curves and
  1956. surfaces can be one of the following types:
  1957.  
  1958.      Polygon
  1959.      Phong
  1960.      B-spline
  1961.  
  1962. Invert
  1963.  
  1964. Treat current freeform data as knot points and convert freeforms to new
  1965. control polygon.
  1966.  
  1967. Remap
  1968.  
  1969. Modify number of points along each dimension of a mesh.
  1970.  
  1971. Surf. to curves
  1972.  
  1973. Create a set of lines from the lines defining the u dimension of a mesh.
  1974. To obtain the line s defining the v dimension, then use /Exchange_u_&_v
  1975. first
  1976.  
  1977. Distribute
  1978.  
  1979. Figure R1-28: Distribute.  (PICTURE: R1-28)
  1980.  
  1981. This function redistributes the knot points along a B-spline line or over
  1982. a B-spline mesh so they are spaced equidistant.
  1983.  
  1984. Assign
  1985.  
  1986. Figure R1-29: Modifying a Mesh with the Assign Function.  (PICTURE: R1-29)
  1987.  
  1988. Points from a mesh pushed onto the Vector stack using <DRAG><SHIFT> are
  1989. assigned new coordinates. The new coordinates are taken from a selected
  1990. line operand. The selected points are assigned their new coordinates
  1991. consecutively i.e. first selected point from the first point on the line.
  1992. If the number of selected points and points on the curve are un-equal,
  1993. then extra points are ignored or un-used.
  1994.  
  1995. Exchange u & v
  1996.  
  1997. This exchanges the interpretation of the u and v dimensions of selected
  1998. mesh(es).
  1999.  
  2000.                             - REFERENCE 1.53 -
  2001.  
  2002. Snap to
  2003.  
  2004. This function takes two or more freeforms as parameters and "snaps" the
  2005. points of the rest of the operands to the first "target" operand. The
  2006. "Snap" operation is based on the shortest distance from each point to the
  2007. target.
  2008.  
  2009. Usually, the operands are groups, because snapping e.g. a whole surface
  2010. to another one seldom makes sense. For example, the three leftmost curves
  2011. of a B-spline control polygon mesh can be snapped to another mesh, thus
  2012. joining the both.
  2013.  
  2014. Delete
  2015.  
  2016. DEFINE:
  2017. Select a freeform, <SHIFT><DRAG> a point on it, then select the function.
  2018.  
  2019. The function deletes the selected points on a freeform. If the operand is
  2020. a mesh, the "u"-direction curve on which the point lies, is deleted. To
  2021. delete a "v"-direction curve, apply Exchange_u_&_v first. If the curve/
  2022. mesh contains less than 4 points in a parameter direction after applying
  2023. the function, the type of the freeform is automatically converted to
  2024. "Polygon".
  2025.  
  2026. Insert
  2027.  
  2028. DEFINE: Select a freeform, <SHIFT><DRAG> a point on it, then select the
  2029. function.
  2030.  
  2031. This function adds a new point after the first selected point of each
  2032. operand curve. If the operand is a mesh, a new "u"-direction curve is
  2033. inserted. The position of the new point or the shape of the new curve is
  2034. obtained by interpolating linearly the selected point/curve and the next
  2035. point/curve. If the selected point/curve is the last one, it is
  2036. duplicated.
  2037.  
  2038. Break
  2039.  
  2040. DEFINE: Select a freeform, <SHIFT><DRAG> a point on it, then select the
  2041. function.
  2042.  
  2043. This function splits the target freeform. The point where a curve is
  2044. broken is copied to both halves. If the target is a freeform, it is broken
  2045. in "u" direction along a curve on which the selected point lies.
  2046.  
  2047. Draw Mode/
  2048.  
  2049.      * Accurate
  2050.      * Bounding_box
  2051.  
  2052. These two complementary toggles select whether the full wire-frame or a
  2053. rectangular prism enclosing the selected objects is to be used while a
  2054. modify function is being executed.
  2055.  
  2056. 1.4 VIEW
  2057.  
  2058. Each view window has its own settings to define how and when it is
  2059. refreshed. These are defined with the functions under this menu heading.
  2060. The View to which these settings apply will be the currently selected
  2061. window.
  2062.  
  2063. Type/
  2064.  
  2065. * Parallel
  2066.  
  2067. View shows the objects using parallel-projection. No account is taken of
  2068. distance to the viewpoint when calculating the 2D positions of 3D
  2069. coordinates. The viewing coordinate system can be altered using the
  2070. keyboard controls.
  2071.  
  2072. * Perspective
  2073.  
  2074.                             - REFERENCE 1.54 -
  2075.  
  2076. The 2D positions of 3D coordinates are evaluated taking into account the
  2077. perspective caused by their distance from the viewpoint. The viewing
  2078. coordinate system can be altered using the keyboard controls. This form of
  2079. projection is slower than parallel.
  2080.  
  2081. * Separate IO
  2082.  
  2083. When this is enabled the input and output planes are separated. This means
  2084. that rotating the view coordinates allows object creation to be viewed
  2085. from any angle. Disabling this function means the input and output planes
  2086. remain connected during rotation, so the actual creation orientation is
  2087. changed.
  2088.  
  2089. Input Crd./
  2090.  
  2091. Set XY <RAM>X
  2092.  
  2093. Set I/O planes of view window to be x, y plane.
  2094.  
  2095. Set YZ <RAM>Y
  2096.  
  2097. Set I/O planes to be y, z plane.
  2098.  
  2099. Set ZX<RAM>Z
  2100.  
  2101. Set I/O planes to be z, x plane.
  2102.  
  2103. Set Custom <RAM>C
  2104.  
  2105. Set I/O planes to last defined custom direction maintained by all other
  2106. functions except Set_XY/YZ/ZX. This makes it possible to swap quickly
  2107. between all four main projections.
  2108.  
  2109. Define X
  2110.  
  2111. Define x axis of input plane to be the same as vector defined using two
  2112. coordinates.
  2113.  
  2114. Define Y
  2115.  
  2116. Define y axis of input plane to be the same as vector defined using two
  2117. coordinates.
  2118.  
  2119. Obj. Space to View
  2120.  
  2121. Use a selected object to define the orientation for the view window. In
  2122. other words, the direction of the selected object becomes the direction of
  2123. the active View window.
  2124.  
  2125. Camera/
  2126.  
  2127. Forward <RAM>F
  2128.  
  2129. Backward <RAM>B
  2130.  
  2131. These functions allow you to move forwards in the direction of the
  2132. aimpoint, or backwards away from the direction of the aimpoint. Both the
  2133. viewpoint and the aimpoint are moved. SETTINGS/View Resolutions/Position
  2134. defines how much they are moved each time.
  2135.  
  2136. Orientation
  2137.  
  2138. Opens a requester which is used for defining the current viewing angle.
  2139. Three values defines how much the viewing angle is rotated about x, y and
  2140. z axes in degrees. If the menu View/Separate IO is not set, this function
  2141. also rotates the input plane.
  2142.  
  2143. View->Camera <RAM> V
  2144.  
  2145. This allows the current View-orientation to be saved by storing it to the
  2146. selected objects. The objects must contain at least one camera, and the
  2147. orientation will be copied to the first viewpoint and/or aimpoint found.
  2148.  
  2149.                             - REFERENCE 1.55 -
  2150.  
  2151. Camera-> View
  2152.  
  2153. Selected objects are searched and the first viewpoint and/or aimpoint
  2154. found will be used to define the new orientation for the View. This allows
  2155. a new View orientation to be selected using previously defined viewpoint
  2156. and/or aimpoint. If no cameras are found, then an error will be raised.
  2157.  
  2158. Create Camera
  2159.  
  2160. This records the current view-orientation by creating a level at the
  2161. current hierarchy level containing a viewpoint and aimpoint. The aimpoint
  2162. and viewpoint data reflect the current orientation and zoom settings of
  2163. the View.
  2164.  
  2165. * Camera View
  2166.  
  2167. When this function is enabled, then viewpoint and aimpoint primitives are
  2168. used for defining the orientation for the View window when an animation is
  2169. played. This means that if these primitives are modified by the user, or
  2170. by a method during the animation, then the viewing position and zoom level
  2171. will also change. If there are more than one viewpoint or aimpoint, the
  2172. first found is used, unless the tag SWND is used for defining a particular
  2173. name of a View window to be exclusively related to aim/viewpoint in
  2174. question.
  2175.  
  2176. Display/
  2177.  
  2178. Zoom In <RAM>+
  2179.  
  2180. Increases magnification of View using zoom setting.
  2181.  
  2182. Zoom Out <RAM>-
  2183.  
  2184. Decrease viewing magnification using zoom setting.
  2185.  
  2186. Custom Scale
  2187.  
  2188. Enter zoom scale with numeric requester.
  2189.  
  2190. Position
  2191.  
  2192. Move view position in plane of View. A point in Absolute Coordinate Space
  2193. is defined first, and this is moved to the coordinate of the View defined
  2194. with the second <LMB> action.
  2195.  
  2196. Pos&Zoom In <RAM>I
  2197.  
  2198. DEFINE: center point and size of new view.
  2199.  
  2200. The center point of the new viewing coordinates is created, then a
  2201. rectangle the same proportions as the view is sized. If confirmed, then
  2202. the view will be expanded so the rectangle fills the view window.
  2203.  
  2204. Pos&Zoom Out <RAM>O
  2205.  
  2206. DEFINE: center point and size of the current view.
  2207.  
  2208. The defined rectangle becomes the size of the current view in the view
  2209. window.
  2210.  
  2211. Reset <RAM>E
  2212.  
  2213. Reset View Orientation to the last saved settings for the View.
  2214.  
  2215. Grid/
  2216.  
  2217. Select
  2218.  
  2219. Open the grid select requester to select name of grid to use as current
  2220. grid for View.
  2221.  
  2222.                             - REFERENCE 1.56 -
  2223.  
  2224. Figure R1-30: The Grid Requester  (PICTURE: R1-30)
  2225.  
  2226. Create
  2227.  
  2228. Create a new grid using the grid requester, with the following gadgets:
  2229.  
  2230. Name
  2231.  
  2232. Enter name of the new grid. Grids are selected using the name.
  2233.  
  2234. Grid
  2235.  
  2236. Enter X,Y, Z dimensions of grid.
  2237.  
  2238. Origin
  2239.  
  2240. Enter X,Y, Z coordinates of origin of grid.
  2241.  
  2242. Position & Size
  2243.  
  2244. The grid plane position and size definitions.
  2245.  
  2246. Pattern
  2247.  
  2248. A 16 bit value, which defines the drawing pattern for the grid. The
  2249. default value 65535 defines a solid line, whereas the value 255 defines a
  2250. broken line. The value 1 produces only discrete dots.
  2251.  
  2252. Color
  2253.  
  2254. The color of the grid.
  2255.  
  2256. If confirmed, then the new grid will become the current grid for the
  2257. window.
  2258.  
  2259. Modify
  2260.  
  2261. Allows a grid to be selected using the Grid select requester. Then the
  2262. Grid requester is opened to allow the selected grid to be modified. If the
  2263. changes are confirmed, the grid is modified and it becomes the current
  2264. grid
  2265.  
  2266. Reposition
  2267.  
  2268. The center of the grid is redefined to the coordinate defined with the
  2269. pointer.
  2270.  
  2271. Delete
  2272.  
  2273. Select name of grid to be removed from list of defined grids.
  2274.  
  2275. * Visible
  2276.  
  2277. If set, then grid is visible
  2278.  
  2279. * Snap to Grid
  2280.  
  2281. Entered coordinates will be rounded to nearest grid dimension.
  2282.  
  2283.                             - REFERENCE 1.57 -
  2284.  
  2285. Render/
  2286.  
  2287. Window <RAM>R
  2288.  
  2289. Render currently selected view window.
  2290.  
  2291. Boxes
  2292.  
  2293. Only render defined boxes in selected view window.
  2294.  
  2295. Grayscale
  2296.  
  2297. The highest resolution screen with maximum bitplanes will be opened with
  2298. a borderless window for rendering. The initial settings will be taken from
  2299. the current View, and the render settings requester will be opened to
  2300. allow the user to make changes before commencing rendering.
  2301.  
  2302. HAM
  2303.  
  2304. Open HAM screen with borderless view window and render to this. Initial
  2305. settings are taken from the current View, and the render settings
  2306. requester is opened to allow changes to be made before finally rendering.
  2307.  
  2308. * Selected
  2309.  
  2310. When set, only selected objects are rendered .
  2311.  
  2312. Settings <RAM>S
  2313.  
  2314. Open Render settings requester for current View.
  2315.  
  2316. Local Menu:
  2317.  
  2318. IMAGES/
  2319.  
  2320. Backdrop image/
  2321.  
  2322. Define
  2323.  
  2324. Produce file requester to select Backdrop image.
  2325.  
  2326. Show
  2327.  
  2328. Display Backdrop image. If the image is 24-bit, then a requester will be
  2329. produced asking for confirmation, as displaying the image may overwrite
  2330. the contents of the External Screen.
  2331.  
  2332. Environment map/
  2333.  
  2334. Define
  2335.  
  2336. Produce file requester to select Environment map image file.
  2337.  
  2338. Show
  2339.  
  2340. Display the Environment map image. As with Backdrop_image/Show, this will
  2341. ask for confirmation before displaying a 24-bit file.
  2342.  
  2343. COLOR/
  2344.  
  2345.      Ambient
  2346.      Background
  2347.      Background_gradient
  2348.      Environment
  2349.      Environment_gradient
  2350.  
  2351. Each of these menu selections assigns the current color to the RGB values
  2352. for the corresponding numeric gadget. The current color can be changed
  2353. using the Palette window.
  2354.  
  2355.                             - REFERENCE 1.58 -
  2356.  
  2357. SET/
  2358.  
  2359. File Name
  2360.  
  2361. Open a file requester to define the name of the output file, which is used
  2362. when IFF file/Targa file/Bmp file output is selected.
  2363.  
  2364. Memory_Usage
  2365.  
  2366. This opens a requester to control the maximum memory the View window can
  2367. use when rendering. The more memory the Rendering Engine has available,
  2368. then the faster it is capable of going, and if it does not have enough,
  2369. then it cannot render at all.
  2370.  
  2371. Figure R1-31: The Memory Usage Requester  (PICTURE: R1-31)
  2372.  
  2373. Gadgets:
  2374.  
  2375. Fixed
  2376.  
  2377. The maximum amount of memory the View can use when rendering is calculated
  2378. from the amount of free memory when the View is created.
  2379.  
  2380. Relative
  2381.  
  2382. The memory for rendering is determined as a percentage of the total
  2383. available memory when rendering is commenced. The default for this is 20%.
  2384.  
  2385. * Color Shading
  2386.  
  2387. When set the Rendering Engine will use color shading. For this setting to
  2388. produce the correct results, the screen palette must be set to "COLOR
  2389. SCALE" using the main menu function PROJECT/Environment/Screen Palette to
  2390. open the screen palette requester. Color shading works properly only if
  2391. screen depth is 6 or higher.
  2392.  
  2393. Figure R1-32: The Render Settings  (PICTURE: R1-32)
  2394.  
  2395.                             - REFERENCE 1.59 -
  2396.  
  2397. Gadgets:
  2398.  
  2399. Output
  2400.  
  2401. Select output target for rendered image:
  2402.  
  2403. Window     - Real-3D View window
  2404.  
  2405. IFF File   - File in IFF24 format
  2406.  
  2407. Targa File - File as Targa format
  2408.  
  2409. BMP File   - File in Windows(TM) BMP format
  2410.  
  2411. External   - External Screen e.g. 24-bit frame-store
  2412.  
  2413. Note:
  2414. If a View which is a handle to an External-screen is saved, it does not
  2415. automatically open the External screen when the file is re-loaded. This
  2416. will produce a warning requester, and if the External-screen is not
  2417. opened, then the View will default to rendering to it's window"
  2418.  
  2419. File
  2420.  
  2421. When one of the "File" output targets is selected, then the name of the
  2422. destination file is entered here, or it can be selected with SET/File_
  2423. Name. The file name will have the current Frame number appended to it,
  2424. and formatted using the Format string from the Animation system.
  2425.  
  2426. Mode = Draft
  2427.  
  2428. The rendering engine uses a grey-scale evaluation of the object color and
  2429. ignores all material properties to render the image. This is the fastest
  2430. rendering mode available.
  2431.  
  2432. Mode = Environment
  2433.  
  2434. All objects are treated as Not Reflected with reflections being taken from
  2435. Environment color and/or map. Only a single light-source from the
  2436. viewpoint is used. This is the fastest rendering mode which shows object
  2437. colors and a representation of material properties.
  2438.  
  2439. Mode = Lampless 
  2440.  
  2441. The scene is rendered using full object and material properties, but only
  2442. the single viewpoint light-source is used.
  2443.  
  2444. Mode = Shadowless
  2445.  
  2446. All user-defined light-sources are evaluated, but no shadows are
  2447. calculated.
  2448.  
  2449. Mode = Normal
  2450.  
  2451. Full rendering evaluation.
  2452.  
  2453. Mode = Outline
  2454.  
  2455. The scene is rendered as a hidden-line wire-frame image by rendering the
  2456. edges of all objects. These outlines are colored according to each
  2457. object's color properties and will be dithered if dithering is enabled.
  2458.  
  2459. Dithering = Rnd RGB
  2460.  
  2461. Separate random deviation for each color component:
  2462.  
  2463.      R = R + rnd1,
  2464.      G = G + rnd2,
  2465.      B = B + rnd3
  2466.  
  2467. Dithering = Rnd intensity
  2468.  
  2469. The same random deviation is used for each component:
  2470.  
  2471.      R = R + rnd,
  2472.      G = G + rnd,
  2473.      B = B + rnd
  2474.  
  2475. Dithering = Fixed rnd int
  2476.  
  2477. The same random deviation for each color component and a fixed dithering
  2478. pattern is used for every frame.
  2479.  
  2480.                             - REFERENCE 1.60 -
  2481.  
  2482. Dithering = Row
  2483.  
  2484. Colors dithered line by line.
  2485.  
  2486. Dithering = Raster
  2487.  
  2488. Use a checkered pattern for dithering.
  2489.  
  2490. Dithering = None
  2491.  
  2492. No dithering applied.
  2493.  
  2494. Ambient (0,0,0)
  2495.  
  2496. Color and level of ambient light. This affects the overall color of
  2497. highlights and shadows.
  2498.  
  2499. Background (128 128, 128)
  2500.  
  2501. Color of image background. This does not interact with the rendering of
  2502. objects and materials.
  2503.  
  2504. Backgr. grad (RGB settings & gadget) (0, 0, 0)
  2505.  
  2506. Using Background Gradient enables a non-uniform background to be produced.
  2507. When the Background gradient gadget is enabled, then the image will have a
  2508. uniform gradient from the Background color at the top of the image to the
  2509. Background Gradient color at the bottom.
  2510.  
  2511. Environment (128, 128, 128)
  2512.  
  2513. This specifies the color which is evaluated as if an infinite sphere of
  2514. this color surrounds the objects in the scene. This sphere is treated as a
  2515. Scene object and only appears in reflections and via refraction.
  2516.  
  2517. Envir. grad (RGB settings & gadget) (0, 0, 0)
  2518.  
  2519. When the Environment Gradient gadget is enabled, then the "Environment
  2520. Sphere" will have a gradient from the Environment color at the top, to the
  2521. Environment Gradient color at the bottom of the image.
  2522.  
  2523. Brightness (0 - 255)
  2524.  
  2525. This controls the scaling of all the light sources in the scene. The ratio
  2526. between the intensities of all the light sources is maintained, but re-
  2527. scaled by the Brightness setting. The default setting is 50.
  2528.  
  2529. Overlight (0 - 255)
  2530.  
  2531. The level of this setting controls how rapidly the color intensity turns
  2532. the color to pure white. While the color of each pixel is being evaluated,
  2533. the internal color components can exceed 255. The excess for each
  2534. component is multiplied by the Overlight factor and then added to the
  2535. other two components. The default setting of 1 means that only the
  2536. brightest parts of the scene become "over-exposed", and only gradually.
  2537.  
  2538. Recursions (0 - 16)
  2539.  
  2540. This defines to what depth light rays are evaluated as they reflect from
  2541. surface to surface. At the default setting of 3, only the first three
  2542. reflections of a light ray can have any effect on the current pixel.
  2543.  
  2544. Dither scale
  2545.  
  2546. This defines the maximal deviation of the color signals when using
  2547. dithering. The default value of 64 determines that only two consecutive
  2548. colors are mixed at a time. 24-bit rendering output is not affected by
  2549. this setting.
  2550.  
  2551.                             - REFERENCE 1.61 -
  2552.  
  2553. Backdrop image (file name & gadget)
  2554.  
  2555. When the Backdrop image gadget is enabled, then the named file is used as
  2556. a background to the rendered scene. This does not interact with the 3D
  2557. objects in any way and fills the background display area completely. If a
  2558. backdrop image is being used, this replaces any Background color settings.
  2559.  
  2560. Environment map (file name & gadget)
  2561.  
  2562. Setting the Environment map gadget maps the file specified onto the
  2563. "environment sphere". If an environment map is being used, this replaces
  2564. any Environment Color/Gradient settings.
  2565.  
  2566. Width & Height
  2567.  
  2568. These gadgets control the width & height of the rendered image in pixels
  2569. when rendering to a file or an Eternal Screen. They are ghosted when a
  2570. Window output target is selected, and they only display the window
  2571. dimensions.
  2572.  
  2573. Pixel h/w
  2574.  
  2575. Controls the aspect ratio used for individual pixels when rendering. The
  2576. default setting of 0. 0 means that the target Rendering Screen's automatic
  2577. aspect ratio is used.
  2578.  
  2579. DOF Scale
  2580.  
  2581. Controls how the Absolute Spatial Distance of an object from the Aim-point
  2582. affects the focus. "DOF Scale" does not relate directly to Absolute
  2583. Spatial Coordinates, but the higher it's value, the more rapidly distance
  2584. from the Aim-point increases blurring. If set to 0.0, then Depth of Field
  2585. is infinite and all objects are sharp.
  2586.  
  2587. DOF Strength (0.0 - 5.0) 
  2588.  
  2589. This numeric controls how much blurring occurs at a given distance. Like
  2590. "DOF Scale", the effect increases with an increase in value, and if set to
  2591. 0.0, then Depth of Field is infinite. Default setting is 2.0.
  2592.  
  2593. X-resolution (1 - 8)
  2594. Y-resolution (1 - 8)
  2595.  
  2596. These two gadgets control the size of patches evaluated when rendering.
  2597. Default is 1 for X & Y.
  2598.  
  2599. Antialiasing (0---8)
  2600.  
  2601. This controls when the color signal difference triggers the Adaptive
  2602. Over-sampling of the Anti-aliasing routines.
  2603.  
  2604.      trigger level = 256/(2^aa)
  2605.  
  2606.      So: 256/(2^8) = 1 -> always over-sampled
  2607.      256/(2^1) = 128 -> if csd > 128
  2608.  
  2609.      where: csd = color signal difference
  2610.      aa = anti-aliasing setting
  2611.  
  2612. It also affects motion blur quality by triggering additional temporal
  2613. sampling.
  2614.  
  2615. Lightsamples (0 - 32)
  2616.  
  2617. This controls the amount of sampling used for diffuse light-sources. A
  2618. setting of 1 will produce satisfactory results unless the diffuse-light-
  2619. source is very large in relationship to the other objects in the screen.
  2620. A "Lightsamples" level of 32 converts a lightwall into over 1000 internal
  2621. light-sources, which will have a significant impact on rendering time.
  2622.  
  2623. Mat. samples (0 - 32)
  2624.  
  2625. Amount of sampling for Non-homogeneous Material Properties.
  2626.  
  2627.                             - REFERENCE 1.62 -
  2628.  
  2629. Subdivisions (0 - 4)
  2630.  
  2631. Controls how finely B-spline surfaces are evaluated when rendering, and if
  2632. B-spline->Phong is set, how much each face is subdivided. A setting of 0
  2633. will be faster, but may produce some visual errors. If set to 4, B-splines
  2634. are very finely subdivided during rendering. This will slow evaluation
  2635. considerably, but will allow even very convoluted surfaces to render
  2636. correctly. The default setting is 2, which is adequate most of the time.
  2637.  
  2638. B-spline->Phong
  2639.  
  2640. B-spline surfaces are converted internally to phong type freeforms before
  2641. rendering. This obviously produces all the artifacts of "Phong" shading,
  2642. but as it accelerates calculations considerably, it is useful for
  2643. evaluating a scene before final rendering. The quality of the result is
  2644. controlled by the Subdivisions setting. The conversion process consumes a
  2645. significant amount of memory.
  2646.  
  2647. Autogxp (set by default)
  2648.  
  2649. This rescales the output from the Rendering Engine, so only the brightest
  2650. parts of the scene will reach maximum display brightness when rendered.
  2651. The effect of this is the same as that of automatic exposure by a camera,
  2652. which is to produce the most balanced image possible under the available
  2653. lighting conditions.
  2654.  
  2655. Field rendering
  2656.  
  2657. Every odd frame is rendered half a pixel lower. This provides the odd and
  2658. even fields for 50fps PAL.
  2659.  
  2660. No bgr. antial.
  2661.  
  2662. Prevents anti-aliasing between the edges of objects and the background.
  2663. This is useful when the image will be genlocked with video source.
  2664.  
  2665. Alpha output
  2666.  
  2667. Rendering calculations will be carried out using Alpha Information from
  2668. visibles. This Alpha Channel information can go directly to an External
  2669. Screen if the device supports this, or can be rendered to a Targa Alpha
  2670. file.
  2671.  
  2672. HL-shading
  2673.  
  2674. Uses additive instead of proportional method to calculate consecutive
  2675. shades of a color. This produces significantly better results for 6-bit
  2676. HAM rendering. It can be also used for producing more "colorful" images
  2677. in general.
  2678.  
  2679. Export RPL
  2680.  
  2681. This function outputs all the material data-structure, object data
  2682. structure, animation settings data structure and the Render settings for
  2683. the View in ASCII RPL format to a file specified by the user through the
  2684. file requester.
  2685.  
  2686. Drawing Set <RAM>D
  2687.  
  2688. Opens Refresh settings requester. This requester controls how each View is
  2689. refreshed and what features are displayed when refreshed as wireframe.
  2690.  
  2691.                             - REFERENCE 1.63 -
  2692.  
  2693. Figure R1-33: Drawing Settings  (PICTURE: R1-33)
  2694.  
  2695. Gadgets:
  2696.  
  2697. Curve Subdiv. (2 - 9)
  2698.  
  2699. The number of subdivisions used when drawing curves. The default is 5.
  2700.  
  2701. Surface Subdiv (2 - 9)
  2702.  
  2703. The number of subdivisions used when evaluating the curves of a B-spline
  2704. surface. The default setting is 2.
  2705.  
  2706. Draw v
  2707.  
  2708. When set, the v direction of a B-spline is drawn using Surface
  2709. Subdivision. If un-set, then only u direction is subdivided.
  2710.  
  2711. Render Wire
  2712.  
  2713. Window is always refreshed as wire-frame when refreshed by the Animation
  2714. System.
  2715.  
  2716. Morphing Routes
  2717.  
  2718. Key-frame morphing paths are drawn when set.
  2719.  
  2720. No Refresh
  2721.  
  2722. The window will not be refreshed by normal refresh commands.
  2723.  
  2724. Coordinates
  2725.  
  2726. When enabled, the View will display the position of the pointer in
  2727. absolute spatial coordinates and the "Current and "Next" items on the
  2728. action list will be displayed in the active view window's title bar.
  2729.  
  2730.                             - REFERENCE 1.64 -
  2731.  
  2732. Aspect R.
  2733.  
  2734. Control the aspect ratio of the view window.
  2735.  
  2736. C.Polyg.
  2737.  
  2738. Draw control polygons of B-splines when set.
  2739.  
  2740. Curve
  2741.  
  2742. When set, the curve of a B-spline is drawn. This is the default setting.
  2743.  
  2744. Knots
  2745.  
  2746. If set, the knot-points of B-splines lines will be marked with a "oo" and
  2747. the end-point of the curve will be marked with an arrow. The end-points of
  2748. the curves for a B-spline mesh are marked with "u" or "v", depending on
  2749. which dimension. This is set by default.
  2750.  
  2751. Mappings
  2752.  
  2753. Mapping primitives are visible if this gadget is set. This is the default.
  2754.  
  2755. Names
  2756.  
  2757. The names of objects will appear on or near them if this is set.
  2758.  
  2759. Ray Trc.
  2760.  
  2761. If this is enabled, then the default refresh mode for the window will use
  2762. the rendering engine with the current Render settings.
  2763.  
  2764. Controls
  2765.  
  2766. When set, Controls objects are visible. This is the default.
  2767.  
  2768. Busy Req.
  2769.  
  2770. When set, a requester will be produced when the window is being rendered,
  2771. or when a Fractal tree is being generated, to show the percentage of the
  2772. task completed.
  2773.  
  2774. Abs Grid
  2775.  
  2776. This produces a fixed grid in the Z-X plane to make visualization of the
  2777. current view orientation easier.
  2778.  
  2779. Boxes/
  2780.  
  2781. Define
  2782.  
  2783. Create rectangle to confine rendering area. An unlimited number of these
  2784. rectangles can be defined, and they may overlap.
  2785.  
  2786. Modify
  2787.  
  2788. Select name of box to modify, then a numeric requester will allow the
  2789. position and dimensions of the box to be changed.
  2790.  
  2791. Delete
  2792.  
  2793. Select name of box to be deleted.
  2794.  
  2795. Delete All
  2796.  
  2797. Remove all box definitions for selected window.
  2798.  
  2799. Show All
  2800.  
  2801. Shows all defined boxes with broken outline.
  2802.  
  2803.                             - REFERENCE 1.65 -
  2804.  
  2805. 1.5 ANIMATE
  2806.  
  2807. The Animation System refreshes all Views during play, ignoring the System
  2808. Refresh Settings and any "No Refresh" gadgets for individual Views.
  2809.  
  2810. Create/
  2811.  
  2812. These functions all build the necessary hierarchical structure to
  2813. implement the method for selected objects. The selected objects each
  2814. become the target for the method and the defined controls become the
  2815. parameters for the method.
  2816.  
  2817. For further details of the methods, see the reference chapter 2.
  2818.  
  2819. Coplanar Path
  2820.  
  2821. Create a PATH method using selected objects and defined B-spline.
  2822. DEFINE: points on the control polygon of a B-spline.
  2823.  
  2824. Orthogonal Path
  2825.  
  2826. Create a DIRECTION method using selected objects and defined B-spline.
  2827. DEFINE: points on the control polygon of a B-spline.
  2828.  
  2829. Rotation
  2830.  
  2831. Put the targets into counter clockwise rotation in the current input
  2832. plane.
  2833. DEFINE: coordsys
  2834.  
  2835. Sweep
  2836.  
  2837. Create a SWEEP method using selected objects and defined offset and
  2838. B-spline.
  2839. DEFINE: first offset, then points on the control polygon of a B-spline.
  2840.  
  2841. Stretch
  2842.  
  2843. Create a PATH method using selected objects and defined coordsys and
  2844. B-spline.
  2845. DEFINE: coordsys then points on the control polygon of a B-spline.
  2846.  
  2847. Size
  2848.  
  2849. Create a SIZE method using selected objects and defined coordsys and
  2850. B-spline.
  2851. DEFINE: coordsys then points on the control polygon of a B-spline.
  2852.  
  2853. RPL
  2854.  
  2855. Create a RPL method using targets and specified text. The text can be any
  2856. valid RPL. The method is attached directly to the target(s). No
  2857. additional structure is created.
  2858.  
  2859. Control/
  2860.  
  2861. Play Forwards
  2862.  
  2863. Evaluate animation for from current time to Time = 1.0 and refresh Views
  2864. every 1/Resolution time intervals.
  2865.  
  2866. Play Backwards
  2867.  
  2868. Play Animation from current time to Time = 0.0.
  2869.  
  2870. Go to Beginning
  2871.  
  2872. Change Time to 0.0 and evaluate animation at Root level.
  2873.  
  2874. Go to End
  2875.  
  2876. Change Time to 1 .0 and evaluate Root.
  2877.  
  2878.                             - REFERENCE 1.66 -
  2879.  
  2880. Step Forwards
  2881.  
  2882. Increase Time by 1/Resolution and evaluate Root. If Samples is greater
  2883. than zero, then the evaluation will be subdivided, but the Views will only
  2884. be refreshed at the end of the interval.
  2885.  
  2886. Step Backwards
  2887.  
  2888. Decrease Time by 1/Resolution and evaluate Root with subdivision, if
  2889. Samples > 0.
  2890.  
  2891. Refresh
  2892.  
  2893. Refresh the animation system. Some methods automatically add tags to
  2894. objects when refreshed first time, "matching" the parameters and the
  2895. target objects.
  2896.  
  2897. 1.6 EXTRAS
  2898.  
  2899. Vectors /
  2900.  
  2901. The Vector stack is a place for storing and modifying Absolute Spatial
  2902. Coordinates or points from freeforms. It works on a "Last In First Out
  2903. (LIFO) basis. Whenever a <DRAG> box is formed, the points inside the box
  2904. are stored or "pushed" onto the Vector stack. If no keys are used as
  2905. modifiers, it performs a default action, which is to return the average
  2906. of all the points inside the box.
  2907.  
  2908. Points or coordinates can also be pushed onto the Vector-stack without any
  2909. automatic action being taken. They can then be retrieved or "pulled" from
  2910. the Vector stack to replace <LMB> coordinate entries while using Create or
  2911. Modify functions.
  2912.  
  2913. HOT-KEYS:
  2914.  
  2915. <DRAG>  - Push points from all objects and return average.
  2916.  
  2917. <DRAG>
  2918. <ALT>   - Push points from selected objects and average.
  2919.  
  2920. <DRAG>
  2921. <SHIFT> - Push points from all objects inside <DRAG> box onto Vector-
  2922.           stack.
  2923.  
  2924. <DRAG>
  2925. <SHIFT>
  2926. <ALT>   - Push points from selected objects onto stack.
  2927.  
  2928. <LMB>
  2929. <ALT>   - Push ASC onto Vector stack.
  2930.  
  2931. <RAM>   - Pull point to replace <LMB> click in a View.
  2932.  
  2933. Before the pints are used, it is possible to carry out various vector-
  2934. arithmetic operations with them to obtain averages of different groups of
  2935. points; or create new construction points relative to existing ones.
  2936.  
  2937. Push
  2938.  
  2939. This waits for a <LMB> click or <DRAG> in a View, and the coordinate
  2940. defined or points selected are pushed onto the stack.
  2941.  
  2942. Pull <RAM>.
  2943.  
  2944. Pull coordinate from stack to define a coordinate instead of using a <LMB>
  2945. click or a <DRAG> action.
  2946.  
  2947. Enter
  2948.  
  2949. Enter value for ASC using a requester. This coordinate is then pushed onto
  2950. the stack.
  2951.  
  2952.                             - REFERENCE 1.67 -
  2953.  
  2954. Clear
  2955.  
  2956. Clear Vector stack. The stack can also be cleared by using <DRAG> over
  2957. empty space.
  2958.  
  2959. Add
  2960.  
  2961. Add two vectors on the top of Vector stack. The result remains on the
  2962. stack.
  2963.  
  2964. Subtract
  2965.  
  2966. Subtract top vector from next vector, leaving the result on the stack.
  2967.  
  2968. Average
  2969.  
  2970. Average first two vectors on the top of the stack.
  2971.  
  2972. Average All
  2973.  
  2974. Find the average of all the vectors on the stack. This is the same as
  2975. using <DRAG>, only the average point is left on the stack.
  2976.  
  2977. Cross Product
  2978.  
  2979. Calculate the cross-product of the top two vectors of the stack. The
  2980. cross-product of two vectors is one which is perpendicular to both.
  2981.  
  2982. The following Evaluation System functions take multi-selected objects as
  2983. their operands, and if they are a valid evaluable parameter, then they
  2984. will be evaluated, otherwise they will be ignored. If the selected object
  2985. is a level, then the first sub-object will be used as the operand. For
  2986. each evaluated parameter, a point will be entered onto the Vector stack.
  2987.  
  2988. Eval. Current
  2989.  
  2990. This function evaluates a pint along parameters corresponding to the
  2991. current value of Time.
  2992.  
  2993. Define & Eval.
  2994.  
  2995. Three values between 0.0 and 1 .0 are entered. These are used as the
  2996. coordinates of the Parameter Space for the evaluable parameters.
  2997.  
  2998. Length evaluate
  2999.  
  3000. Evaluates a point a given distance in ASCs along each parameter which is
  3001. a line.
  3002.  
  3003. Undo
  3004.  
  3005. Recall previous hierarchy definition from undo buffer.
  3006.  
  3007. Statistics
  3008.  
  3009. Produces requester stating:
  3010.  
  3011. - Number of objects in hierarchy
  3012. - Memory used for hierarchy
  3013.  
  3014. Refresh All/
  3015.  
  3016. Wire-frame
  3017.  
  3018. Refresh all Views using their individual Refresh Settings.
  3019.  
  3020. Ray Trace
  3021.  
  3022. Renders all View windows. Each View uses its own Render Settings.
  3023.  
  3024.                             - REFERENCE 1.68 -
  3025.  
  3026. Cancel All
  3027.  
  3028. Terminates execution of all REAL 3D functions currently being executed.
  3029.  
  3030. Evaluate/
  3031.  
  3032. Curve Length
  3033.  
  3034. Display the lengths of the currency selected lines.
  3035.  
  3036. Parameter
  3037.  
  3038. Find the nearest point on selected parameters to the pointer when <LMB>
  3039. clicked. This point is entered onto the Vector-stack.
  3040.  
  3041. Select Objects <RAM><SPACE>
  3042.  
  3043. This function selects the objects in the hierarchy which currenCy have
  3044. points on the Vector stack selected with <DRAG><SHIFT> .
  3045.  
  3046. 1.7 SET TINGS
  3047.  
  3048. Clip Boxes/
  3049.  
  3050. Figure R1-34: The Effect of a Clip Box  (PICTURE: R1-34)
  3051.  
  3052. Cubes can be selected as volumes to define which portion of the scene is
  3053. to be visible as a wire-frame. This does not affect rendering.
  3054.  
  3055. * Active
  3056.  
  3057. If set, then only those parts of the scene enclosed by the cubes currently
  3058. selected a s clip boxes will be drawn as wire-frame. The wire-frames are
  3059. only drawn to the nearest line endpoint inside the clip boxes.
  3060.  
  3061. Select
  3062.  
  3063. Enable currency selected cubes as clip boxes.
  3064.  
  3065. Deselect
  3066.  
  3067. Disable all current clip box definitions.
  3068.  
  3069. General
  3070.  
  3071. Produce requester for general system settings:
  3072.  
  3073. Vector Format
  3074.  
  3075. The numeric format for displaying coordinates.
  3076.  
  3077. Float Format
  3078.  
  3079. Numeric format to be used for general floating point number display.
  3080.  
  3081. Macro File
  3082.  
  3083. Where to save the current-macro definition.
  3084.  
  3085.                             - REFERENCE 1.69 -
  3086.  
  3087. Aspect Ratio
  3088.  
  3089. Default system aspect ratio. This is combined with the Refresh Settings/"
  3090. Aspect-R" or Render Settings/"Pixel-h/w" of each View to produce the
  3091. aspect ratio finally used for refreshing each View.
  3092.  
  3093. Drag Delay
  3094.  
  3095. This controls the delay before dragging produces the default average all
  3096. result from the Vector stack.
  3097.  
  3098. Confirm Save
  3099.  
  3100. When this gadget is activated, REAL 3D gives a warning before overwriting
  3101. any existing file.
  3102.  
  3103. Refresh/
  3104.  
  3105. These complementary toggles define the System refresh settings which
  3106. control which view windows will be refreshed when REAL 3D issues an
  3107. automatic refresh command.
  3108.  
  3109. * None    - None of the Views will be refreshed.
  3110.  
  3111. * Current - Only the currently active View.
  3112.  
  3113. * All     - All the view windows.
  3114.  
  3115. Oper.Level/
  3116.  
  3117. These functions control what levels of the hierarchy to re-draw.
  3118. Everything from the current level and below is re-drawn, with the depth
  3119. controlling how many levels above are to be considered.
  3120.  
  3121. * Active
  3122.  
  3123. Enable redraw depth when set
  3124.  
  3125. Depth
  3126.  
  3127. Enter number of hierarchy levels above current level to redraw.
  3128.  
  3129. Creation/
  3130.  
  3131. The following toggles determine various system actions during object
  3132. creation.
  3133.  
  3134. * Qry. Level Name
  3135.  
  3136. When a compound-object creation function is used, a requester is produced
  3137. to allow the user to change the name of the level created.
  3138.  
  3139. * Qry. Prim. Name
  3140.  
  3141. The creation of any new primitive queries its name.
  3142.  
  3143. * Auto current
  3144.  
  3145. Make newly created level the current level of hierarchy.
  3146.  
  3147. * Auto active
  3148.  
  3149. New object will be active after creation.
  3150.  
  3151. *Auto index
  3152.  
  3153. As new objects are created, a "." and an index number is appended to their
  3154. names. This auto-indexing may slow down the creation procedure in some
  3155. cases (F or example, when importing DXF files, where all primitives are
  3156. created at the same level).
  3157.  
  3158.                             - REFERENCE 1.70 -
  3159.  
  3160. Paths
  3161.  
  3162. Enter the default file paths for loading and saving. The path can either
  3163. be entered in the text gadget, or by clicking the gadgets on the left, a
  3164. file requester is produced which enables the path to be selected. These
  3165. can be separately defined for the following data sections:
  3166.  
  3167.      Objects
  3168.      Macros
  3169.      Materials
  3170.      Environments
  3171.      Projects
  3172.      Textures
  3173.      Images
  3174.  
  3175. Alpha Channel
  3176.  
  3177. This requester allows the current alpha information value to be set. This
  3178. is stored as an object property in an the same way as the RGB color
  3179. components; it acts just like a fourth color component for rendering.
  3180. Alpha information is used only when the combination of non-Draft mode
  3181. Render Settings with "Alpha-Channel" enabled is used. The background Alpha
  3182. level is automatically set to maximum value 255. One byte of alpha
  3183. information per pixel is written to the output target.
  3184.  
  3185. Attributes
  3186.  
  3187. Allows default attributes and names used at creation to be set for each
  3188. primitive. For example, if you want all the cubes you create to be
  3189. automatically hollow:
  3190.  
  3191. 1. Choose Settings/Attributes.
  3192.  
  3193. 2. Find the primitive "cube" from the list and select it, then press OK.
  3194.  
  3195. 3. The REAL 3D will now create a requester which shows the current object
  3196.    attributes. Set the Hollow field and choose OK.
  3197.  
  3198. From now on all new cubes you create are hollow. You can verify this using
  3199. the Modify/Properties/Attributes function.
  3200.  
  3201. RPL
  3202.  
  3203. Produces requester to enter the depth settings for the various RPL stacks
  3204.  
  3205. Parameter Stack
  3206.  
  3207. This stack holds the parameters for RPL words as well as the results after
  3208. execution.
  3209.  
  3210. Returncode Stack
  3211.  
  3212. Hold the addresses of RPL words calling another word, so execution can
  3213. return to the original location.
  3214.  
  3215. Control Stack
  3216.  
  3217. Used internally by RPL while compiling new words. It is also used for "IF"
  3218. and 'LOOP" nesting, and recursion.
  3219.  
  3220. Vocabulary Stack
  3221.  
  3222. Stack used for storing the references to the compiled code for RPL word
  3223. definitions. The amount of memory required for each reference is not
  3224. exactly quantifiable, but is approximately 12 bytes on an Amiga System.
  3225.  
  3226. Strings
  3227.  
  3228. Maximum number of string variables which can be used in RPL at any one
  3229. time. The maximum length of a string is 255 bytes.
  3230.  
  3231.                             - REFERENCE 1.71 -
  3232.  
  3233. View Resolutions/
  3234.  
  3235.      Rotation (0.125664)
  3236.  
  3237.      Position (0.100000)
  3238.  
  3239.      Zoom     (10.00000)
  3240.  
  3241. These functions enable the increments used for view window rotation,
  3242. position and zoom to be set. Rotation is specified in radians, Position
  3243. in ASCs and Zoom as scaling units. The default settings are shown in
  3244. parentheses.
  3245.  
  3246. Undo/
  3247.  
  3248. * Active
  3249.  
  3250. Enable operation of Undo buffer. If memory runs out, it is possible to
  3251. recover the memory used for the buffer by de-activating it.
  3252.  
  3253. Set Depth
  3254.  
  3255. Define the depth of the Undo buffer. This defines how many previous
  3256. versions of the hierarchy are stored. If the scene is complex, then a deep
  3257. buffer will consume memory very quickly. The default depth is 3.
  3258.  
  3259. Clear
  3260.  
  3261. Clears current contents of Undo buffer This also recovers the memory used
  3262. by the buffer.
  3263.  
  3264. File Icons
  3265.  
  3266. This function calls up a requester , enabling the user to select which
  3267. REAL 3D file data sections should have an icon created for them when they
  3268. are saved.
  3269.  
  3270. 1.8TOOLS
  3271.  
  3272. This menu is only active if a Tool window is the active window.
  3273.  
  3274. Icons/
  3275.  
  3276.      * Visibles
  3277.      * Sectors
  3278.      * Structures
  3279.      * Lights
  3280.      * Controls
  3281.      * Compounds
  3282.      * Freef.Tools
  3283.      * Mod/Linear
  3284.      * Mod/Structure
  3285.  
  3286. The menu toggles, listed above, select which sets of pre-defined tool
  3287. icons are to be loaded into the selected tool window. It is possible to
  3288. have several tool windows each containing different, or even duplicate
  3289. sets of tool icons.
  3290.  
  3291. Create Icon
  3292.  
  3293. The user is requested to enter the text for a tool gadget. This will be
  3294. created in the currently active Tool window. When this gadget is selected,
  3295. an RPL file or word with the same name as the gadget text will be looked
  3296. for in the MACRO directory or Master RPL environment. If found, it will be
  3297. executed. The maximum length for the gadget text is 11 characters.
  3298.  
  3299. Delete Icon
  3300.  
  3301. This opens a requester displaying the text contents of all the user
  3302. defined tool gadgets. One can then be selected for deletion.
  3303.  
  3304.                             - REFERENCE 1.72 -
  3305.  
  3306. Chapter 2 ANIMATION SYSTEM
  3307. --------------------------
  3308.  
  3309. 2.1 Principles
  3310.  
  3311. 2.1.1 General Information
  3312.  
  3313. The basic concept of the Real 3D Animation system is that it is possible
  3314. to create an object which consists of a shape, and a motion. These
  3315. animation actions are created by adding an animation method to the same
  3316. level of hierarchy as the object defining the shape. For example, a moving
  3317. car consists of a shape and a motion object.
  3318.  
  3319.       +-----------+
  3320.       | MovingCar |
  3321.       +-----------+
  3322.          /     \
  3323.      +-----+ +-----------+
  3324.      | Car | | Motion(M) |
  3325.      +-----+ +-----------+
  3326.                /
  3327.            +------+
  3328.            | Road |
  3329.            +------+
  3330.  
  3331. Figure R2-1: A moving car consists of a shape and a motion.
  3332.  
  3333. Technically a method consists of an object to which some kind of procedure
  3334. has been attached. The Animation system informs each method when time has
  3335. changed and each procedure then determines what actions it should carry
  3336. out to the targets. For brevity the term "method" is used interchangeably
  3337. with method procedure unless it is necessary to make the distinction
  3338. clear.
  3339.  
  3340. There are two possible kinds of method procedures: built-in method
  3341. procedures and procedures defined via RPL by the user.
  3342.  
  3343. 2.1.2 Built-in Methods
  3344.  
  3345. The built-in methods, with the exception of TRANSFORM, each use the
  3346. objects at the same level of hierarchy as themselves as targets
  3347. (excluding other methods). Built-in methods all carry out their actions
  3348. on their chosen targets depending on the difference between their current
  3349. time and the new time value. The actions of the built-in methods are
  3350. determined by three factors: their method type, their parameters (if
  3351. specified in their syntax), and the outcome of their evaluation of time.
  3352.  
  3353. Most of the built-in methods require additional information in order to
  3354. carry out their actions. This information takes the form of either one
  3355. or more parameters contained within the sub-structure of the method
  3356. object, or one or more tags attached to the method object. It is also
  3357. sometimes necessary to attach tags to the targets and the parameters.
  3358. Since most methods require at least one parameter it is usual to use a
  3359. level as the method object. It is possible, and often necessary, to
  3360. arrange methods hierarchically so that one method affects the parameters
  3361. of another.
  3362.  
  3363. 2.1.3 User Defined Methods
  3364.  
  3365. User defined methods can take whatever action they choose when informed
  3366. by the Animation system that Time has changed. They do not even have to
  3367. affect any target or take any account of their method time. It is quite
  3368. legitimate for a method procedure to take some arbitrary action such as
  3369. a call to a system function for every new frame. Since the syntax of the
  3370. method procedure is decided by the user, it is possible to choose an
  3371. appropriate method object to attach to the procedure; and any required
  3372. parameters or tags can be specified in any way.
  3373.  
  3374. The user can create new methods either using the RPL word MTH_CREATE, or
  3375. by using the build-in method named just RPL. It is also possible to
  3376. customize existing methods by associating SRPL and SFOR tags with them.
  3377.  
  3378.                              - REFERENCE 2.1 -
  3379.  
  3380. Note:
  3381. A method procedure is executed for every time interval. The number of time
  3382. intervals during an animation is dependent on Resolution and Samples.
  3383.  
  3384. 2.1. 4 Evaluating Parameters
  3385.  
  3386. Most methods require that certain parameters be of a type that can return
  3387. certain information when processed using the Evaluation System.
  3388.  
  3389. Evaluation System takes three floating values and one object as parameters
  3390. and returns either a point or direction corresponding to the given
  3391. parameter values.
  3392.  
  3393. Currently the following primitives can be used as evaluable parameters:
  3394.  
  3395.      offset
  3396.      axis
  3397.      coordsys
  3398.      ellipse
  3399.      line
  3400.      mesh
  3401.  
  3402. Other primitives can be made evaluable by attaching SFOR or SRPL tags to
  3403. them and by defining relevant RPL variables. In order to make the object
  3404. fully evaluable (ie. all methods can use it) proper values must be
  3405. assigned to the following variables by user defined formula/procedure:
  3406.  
  3407. x,y,z - position corresponding given parameter value
  3408.  
  3409. i,j,k- direction corresponding given parameter
  3410.  
  3411. Variables t, u, and v are used for parameter space and are read only. All
  3412. built-in evaluable primitives are sensitive only to the first dimension
  3413. (t) except for the mesh which uses the first two dimension (t and u).
  3414. Tags SFOR and SRPL can be attached to evaluable primitives in order to
  3415. customize them, in which case the built-in evaluation is processed first.
  3416.  
  3417. The user has access to the Evaluation System via the RPL words "O_EVAL"
  3418. and 0 DERIV which allows an evaluable parameter to be used to provide the
  3419. same kind of control for a user defined method procedure as the built-in
  3420. methods use.
  3421.  
  3422. 2.1.5 Animation Oriented Tags
  3423.  
  3424. There are five vector tags which are evaluated by the Animation-System and
  3425. used to control the operation of all methods. The interaction of these
  3426. tags and their affect on the operation of the methods is as follows:
  3427.  
  3428. VTIS - This tag defines when the method becomes "active". The current time
  3429.        of the method in is automatically shied to start from zero. In
  3430.        other words, when the current time reaches the value defined by the
  3431.        tag VTIS, the method begins to work and its time starts from the
  3432.        zero.
  3433.  
  3434. VTIE - When the current time reaches this value, the method in question
  3435.        becomes inactive. The local time of the method is stretched so that
  3436.        when the current time runs from the VTIS up to VTIE, the time of
  3437.        the method in question runs from 0 up to 1.
  3438.  
  3439. VPHS - The time is shifted by this value for the method in question.
  3440.  
  3441. VFRQ - The time of the method is multiplied by this value.
  3442.  
  3443.                              - REFERENCE 2.2 -
  3444.  
  3445. be used for accessing SFOR - This tag can the RPL interface of the
  3446. Animation System. The tag can be associated with methods, targets and
  3447. parameters and can affect the RPL variables defined during animation. The
  3448. contents of this tag is usually a formula which modifies certain variables
  3449. in order to customize the object it is associated with.
  3450.  
  3451. SRPL - The purpose of this tag is to provide the user with total control
  3452. over the RPL interface of the Animation system. The tag value can be any
  3453. RPL program providing the user with a more powerful way to customize the
  3454. method, target, and/or parameter objects.
  3455.  
  3456. The RPL Interface to the Animation system consists of the following
  3457. variables:
  3458.  
  3459. T - The current time. This time can be modified by the Animation Window
  3460.     and is always between 0 and 1.
  3461.  
  3462. Res     - Frame resolution
  3463.  
  3464. Frm     - Current frame
  3465.  
  3466. a, b,c  - Velocity
  3467.  
  3468. i, j, k - Spin
  3469.  
  3470. x, y, z - Center of Gravity
  3471.  
  3472. t, u, v - Local time of the method in question or parameter value for
  3473.           object evaluation
  3474.  
  3475. m1, m2  - Mass
  3476.  
  3477. d       - Diameter of the object (size of the bounding sphere)
  3478.  
  3479. f       - Strength of the Force
  3480.  
  3481. rnd     - Random value, always between 0 and 1
  3482.  
  3483. o       - Address of the object
  3484.  
  3485. I       - General usage 32 bit integer value
  3486.  
  3487. fx, fy,
  3488. fz      - General usage variables. Purpose depends on the context
  3489.  
  3490. s       - Distance
  3491.  
  3492. dt      - Time interval between subsequent animation samples
  3493.  
  3494. e       - Kinetic energy of the object
  3495.  
  3496. 2.1.6 Particle System Principles
  3497.  
  3498. The particle system of Real 3D is implemented through methods.
  3499.  
  3500. These methods treat all targets as "particles" with velocity, spin, mass,
  3501. and other physical particle properties. Particles then behave according to
  3502. Newtons Laws of Motion when acted upon by forces. With the exception of
  3503. PROCESSOR, each particle method modifies the velocity and spin by applying
  3504. a force that depends upon the method type and the properties of the
  3505. particles. The motion properties are stored in the tags VVEL and VSPI
  3506. which describe the linear and rotational velocity along or about each axis
  3507. respectively.
  3508.  
  3509. 2.1.6.1 Converting Motion Properties into Real Motion
  3510.  
  3511. The PROCESSOR method converts the motion properties into actual Move and
  3512. Rotate modifications for each particle. If this method is not present on
  3513. the level of the targets of other particle methods then VVEL and VSPI will
  3514. be changed but the particles will not move or rotate.
  3515.  
  3516.                              - REFERENCE 2.3 -
  3517.  
  3518. 2.1.6.2 Forces in the Particle System
  3519.  
  3520. The other methods each apply some force to particles. The default formula
  3521. for this force can be over-ridden by the user with the tags SFOR and SRPL.
  3522. These can contain expressions which are evaluated by RPL and assigned to
  3523. the force variable.
  3524.  
  3525. If the strength of the default force is not strong enough then SFOR f*100,
  3526. for example, would increase this by a factor of 100. It can also be set to
  3527. a constant simply with SFOR 100, which can be desirable for certain
  3528. effects.
  3529.  
  3530. Individual methods then have certain other variables that relate to their
  3531. effect.
  3532.  
  3533. 2.1.6.3 Real Time and Particle Motion
  3534.  
  3535. The particle methods simulate the effect of physical motions. This means
  3536. they require an absolute time scale on which to operate. This time scale
  3537. is called Real-Time, and is expressed in terms of seconds.
  3538.  
  3539. A particle with a velocity of 1.0 will travel the distance of one Absolute
  3540. Spatial Coordinate in one Real Time second. Spin is evaluated in the same
  3541. way with one revolution (expressed as 2 * PI radians) occurring per Real
  3542. Time second. The amount of Real Time evaluated during an animation is
  3543. controlled by the "Seconds" field of the Animation Window, and is not
  3544. related to "Resolution" or rendered frames.
  3545.  
  3546. 2.1.6.4 Side-effects of Particle Animations
  3547.  
  3548. The Particle System simply evaluates the velocity and spin of each
  3549. particle for each time interval and then the PROCESSOR method updates the
  3550. position and direction accordingly. It is often not possible to calculate
  3551. what the previous motion properties of a particle were given only the
  3552. current values. Imagine looking at a pool table after the player has
  3553. played his shot and all the balls have come to rest. It is clearly not
  3554. possible to work out how the balls came to be in their current position.
  3555. They have no velocity or spin and they could have just stopped moving from
  3556. some unknown direction, or been placed there by hand. This means that a
  3557. particle animation CANNOT be evaluated in reverse in the same way as other
  3558. methods.
  3559.  
  3560. The only possible way that Real 3D could play particle animations
  3561. backwards would be to record every frame in a buffer, and this would eat
  3562. away all available memory too quickly to be of any use.
  3563.  
  3564. The Undo buffer is the only way to recover the starting position of a
  3565. particle animation to replay it.
  3566.  
  3567. Another side effect is that the motion produced by other methods is not
  3568. taken into account by the Particle System. It can only evaluate the
  3569. movement and rotation described by the tags VVEL and VSPI.
  3570.  
  3571. Often particle animation is the fastest way to produce animations where
  3572. moving and colliding objects have to behave as realistically as possible.
  3573. To "hand-animate" the collision between hundreds of irregular objects
  3574. would be prohibitively time consuming, and would be unlikely to yield
  3575. believable results. With the particle animation system all the
  3576. calculational details are taken care of leaving the user free to design
  3577. the actual animation.
  3578.  
  3579. 2.1.7 Creating New Methods
  3580.  
  3581. If it is not possible to create a desired animation effect using one of
  3582. the built-in methods it is possible for the user to create their own via
  3583. the Real Programming Language-RPL. There are two ways in which this can be
  3584. accomplished:
  3585.  
  3586.                              - REFERENCE 2.4 -
  3587.  
  3588. 1. Create some RPL text, possibly via Project/Macros/Record Macro, then
  3589.    create the RPL method with the text attached.
  3590.  
  3591. 2. Define an RPL word to carry out the desired animation action; then use
  3592.    the MTH_CREATE word to add this new method to the "Method Type" list of
  3593.    the Animation Properties requester. The word must be defined in the RPL
  3594.    "Master" environment, or "INHERIT" must be used in the RPL Shell window
  3595.    where the word was defined. The new method can then be used exactly
  3596.    like any of the built-in methods. The method procedure attached to the
  3597.    method object, when this method type is selected, is the user defined
  3598.    RPL word; and it can be as simple or as complex as necessary.
  3599.  
  3600. 2.2 Animation methods
  3601.  
  3602. The structure of each syntax description is as follows:
  3603.  
  3604. SYNTAX
  3605.  
  3606. The necessary hierarchical structure is described under this heading. The
  3607. syntax is generalized to show the minimum structure necessary for the
  3608. method to function as a stand alone animation object.
  3609.  
  3610. PARAMETERS
  3611.  
  3612. Parameters required by the method in question are described under this
  3613. heading. Parameter names refer to the SYNTAX.
  3614.  
  3615. TAGS
  3616.  
  3617. Tags which have some specific application to the method in question are
  3618. included here.
  3619.  
  3620. VARIABLES
  3621.  
  3622. All RPL variables affected by the method in question are described here.
  3623.  
  3624. DESCRIPTION
  3625.  
  3626. A full explanation is given of how the method evaluates any parameters or
  3627. tags to carry out its actions on the targets.
  3628.  
  3629. EXAMPLE
  3630.  
  3631. Simple example clarifying the usage of the method.
  3632.  
  3633. 2.2.1 Path
  3634.  
  3635. SYNTAX
  3636.  
  3637. Figure R2-2: PARAMETERS  (PICTURE: R2-2)
  3638.  
  3639. path - evaluable parameter object defining how to move the objects.
  3640.  
  3641. TAGS:
  3642.  
  3643. VPHS - Automatically created for each target if the ISKE tag is not
  3644.        present or the value is not equal to 2.
  3645.  
  3646. ISKE - Created and set to 2 when VPHS tags are created.
  3647.  
  3648.                              - REFERENCE 2.5 -
  3649.  
  3650. VARIABLES
  3651.  
  3652. a, b, c - relative movement during "dt"
  3653. dt      - time interval
  3654. t, u, v - current time
  3655.  
  3656. DESCRIPTION:
  3657.  
  3658. Moves all targets along the given "path". The movement of the targets for
  3659. each time interval is evaluated from the parameter.
  3660.  
  3661. When the animation is played for the first time, the VPHS tag is
  3662. automatically created for each target object by snapping their COGs to the
  3663. parameter curve.
  3664.  
  3665. If automatic phase definition is not desired, the user can create an ISKE
  3666. tag with the value of 2 before playing the animation.
  3667.  
  3668. RPL variables a, b and c reflect how much the target object in question
  3669. will be moved during the time interval.
  3670.  
  3671. 2.2.2 Rotation
  3672.  
  3673. PURPOSE
  3674.  
  3675. Rotate about another object
  3676.  
  3677. SYNTAX
  3678.  
  3679. Figure R2-3: (PICTURE: R2-3)
  3680.  
  3681. PARAMETERS
  3682.  
  3683. coordsys---Any geometric
  3684.  
  3685. TAGS
  3686.  
  3687. None
  3688.  
  3689. VARIABLES
  3690.  
  3691. i,j, k - Defines how fast the target object in question rotates about the
  3692.          object space of the parameter object.
  3693.  
  3694. I      - Modify flags. Can be used for defining what kind of rotation
  3695.          should be applied to the target objects.
  3696.  
  3697. The following values are valid:
  3698.  
  3699. 0      - target objects are rotated about the parameter object (same as
  3700.          Modify/Linear/Rotate).
  3701.  
  3702. 4      - target objects are rotated about COGs of their own (same as
  3703.          Modify/About COGs/Rotate).
  3704.  
  3705. 8      - target objects are not rotated, their COGs are (same as Modify/
  3706.          COGs/Rotate).
  3707.  
  3708. DESCRIPTION
  3709.  
  3710. Rotates targets around parameter object. Each geometric has a well defined
  3711. axis as part of its geometry. The ROTATION method rotates the targets
  3712. about this axis.
  3713.  
  3714. The angular step per time interval is derived from "Resolution"; but is
  3715. calculated so that the method does not rotate the targets completely
  3716. during its evaluation. It rotates by one angular step less than that
  3717. derived, producing continuous motion for a cyclic animation.
  3718.  
  3719.  
  3720.  
  3721.  
  3722.                              - REFERENCE 2.6 -
  3723.  
  3724. Note:
  3725.  
  3726. The Right Hand Rule is used for defining the direction of rotation about
  3727. the parameter; so the direction of rotation can be changed by mirroring
  3728. the parameter object.
  3729.  
  3730. 2.2.3 Sweep
  3731.  
  3732. PURPOSE
  3733.  
  3734. General rotation with accelerations
  3735.  
  3736. SYNTAX
  3737.  
  3738. Figure R2-4: (PICTURE: R2-4)
  3739.  
  3740. PARAMETERS
  3741.  
  3742. center-  parameter for the center-point for general rotation.
  3743.  
  3744. control- evaluable parameter defining how to rotate the target around
  3745.          the center-point.
  3746.  
  3747. TAGS
  3748.  
  3749. VPHS -   Phase used for defining rotations for the target
  3750.  
  3751. VARIABLES
  3752.  
  3753. I -      Modify Flags, see ROTATE method.
  3754.  
  3755. DESCRIPTION
  3756.  
  3757. General rotation with accelerations and decelerations. This rotates the
  3758. targets around "center". The rotation is controlled by the evaluation of
  3759. the "control" parameter.
  3760.  
  3761. Character animations, walking robots etc. applications where arbitrary
  3762. accelerations are needed can be easily created using this method.
  3763.  
  3764. The tag VPHS can be associated with any target object but it is not
  3765. defined automatically.
  3766.  
  3767. 2.2.4 Size
  3768.  
  3769. PURPOSE
  3770.  
  3771. Size objects during an animation
  3772.  
  3773. SYNTAX
  3774.  
  3775. Figure R2-5: (PICTURE: R2-5)
  3776.  
  3777. PARAMETERS
  3778.  
  3779. center - parameter defining center-point for sizing.
  3780.  
  3781.                              - REFERENCE 2.7 -
  3782.  
  3783. control - evaluable parameter defining how object is sized.
  3784.  
  3785. TAGS
  3786.  
  3787. None
  3788.  
  3789. VARIABLES
  3790.  
  3791. I -      Modify flags, See ROTATE method.
  3792.  
  3793. DESCRIPTION
  3794.  
  3795. Changes the targets size according to the distance between the "center"
  3796. parameter and the evaluated point from the "control".
  3797.  
  3798. The variable "I" can be used for defining whether to use Modify/Linear/
  3799. Size, Modify/COGs/Size or Modify/About_COGs/Size.
  3800.  
  3801. 2.2.5 Stretch
  3802.  
  3803. PURPOSE
  3804.  
  3805. Stretch objects in given directions
  3806.  
  3807. SYNTAX
  3808.  
  3809. Figure R2-6: (PICTURE: R2-6)
  3810.  
  3811. PARAMETERS
  3812.  
  3813. coord - coordsys defining axis for the stretch.
  3814.  
  3815. control- evaluable parameter defining how the target dimensions are
  3816.          stretched.
  3817.  
  3818. TAGS
  3819.  
  3820. None
  3821.  
  3822. VARIABLES
  3823.  
  3824. I -      Modify flags, see ROTATE method.
  3825.  
  3826. DESCRIPTION
  3827.  
  3828. The targets dimensions in relationship to the axis of the "coordsys" are
  3829. changed according to the point evaluated from the "control" and projected
  3830. onto the corresponding axis of the "coord".
  3831.  
  3832. This method can be used for creating deformations needed in bouncing
  3833. spheres, collision detection animations etc.
  3834.  
  3835. 2.2.6 Direction
  3836.  
  3837. PURPOSE
  3838.  
  3839. Move along a path with automatic direction control.
  3840.  
  3841. SYNTAX:
  3842.  
  3843. Figure R2-7: (PICTURE: R2-7)
  3844.  
  3845.                              - REFERENCE 2.8 -
  3846.  
  3847. PARAMETERS
  3848.  
  3849. path - evaluable parameter defining move and rotate transformations.
  3850.  
  3851. TAGS
  3852.  
  3853. VPHS, ISKE
  3854.  
  3855. VARIABLES
  3856.  
  3857. None
  3858.  
  3859. DESCRIPTION
  3860.  
  3861. Moves targets along a given "path" rotating it to follow the curvature of
  3862. the parameter.
  3863.  
  3864. VPHS tags are automatically created by snapping the COG of each target
  3865. object to the parameter curve "path".
  3866.  
  3867. This method can be used for creating animations where objects move along
  3868. a path like a car follows a road. Swimming fishes, sneaks etc. can be
  3869. created by subdividing freeform meshes into subgroups and using groups as
  3870. targets for this method.
  3871.  
  3872. 2.2.7 Move & Dir
  3873.  
  3874. PURPOSE
  3875.  
  3876. Move along a path with separate direction control
  3877.  
  3878. SYNTAX
  3879.  
  3880. Figure R2-8: (PICTURE: R2-8)
  3881.  
  3882. PARAMETERS
  3883.  
  3884. move -   evaluable parameter defining movement for the targets.
  3885.  
  3886. direct - evaluable parameter defining rotation for the targets.
  3887.  
  3888. TAGS
  3889.  
  3890. VPHS, ISKE
  3891.  
  3892. VARIABLES
  3893.  
  3894. None
  3895.  
  3896. DESCRIPTION
  3897.  
  3898. This is a combination of methods MOVE and DIRECTION. The first parameter
  3899. defines how the targets are moved. The second parameter defines how the
  3900. targets are rotated using the same evaluation as DIRECTION. Thus, two
  3901. identical curves produce a result the same as the DIRECTION method. If the
  3902. second parameter is a straight line (axis) the method works as a MOVE
  3903. method.
  3904.  
  3905. The VPHS tag is automatically defined for each target by snapping the COG
  3906. of the target in question to the parameter curve "move".
  3907.  
  3908. 2.2.8 Control curves
  3909.  
  3910. SYNTAX
  3911.  
  3912. Figure R2-9: (PICTURE: R2-9)
  3913.  
  3914.                              - REFERENCE 2.9 -
  3915.  
  3916. PARAMETERS
  3917.  
  3918. curve1,
  3919. curve2-  two evaluable parameters defining how to control the stretch,
  3920.          rotation, and movement of the targets.
  3921.  
  3922. TAGS
  3923.  
  3924. VPHS, ISKE
  3925.  
  3926. VARIABLES
  3927.  
  3928. I -      Modify flags. The first bit is used to define whether or not the
  3929.          method should stretch the target. If set, targets are not
  3930.          stretched.
  3931.  
  3932. DESCRIPTION
  3933.  
  3934. Two points are evaluated from each of the parameters of this method and
  3935. the relationship between these points are used to control the
  3936. transformations of the targets. The distance between the points controls
  3937. the size, the angle between them controls the rotation, and the relative
  3938. displacement since the previous evaluation controls the movement.
  3939.  
  3940. The VPHS tag is automatically defined for each target by snapping the
  3941. target to the first parameter curve.
  3942.  
  3943. 2.2.9 Simple skeleton
  3944.  
  3945. SYNTAX
  3946.  
  3947. Figure R2-10: (PICTURE: R2-10)
  3948.  
  3949. PARAMETERS:
  3950.  
  3951. skel - skeleton
  3952.  
  3953. TAGS:
  3954.  
  3955. VOFF -   Defines the offset between the skeleton and target COGs.
  3956.  
  3957. If not present, each target COG is snapped on to the skeleton.
  3958.  
  3959. VPHS -   Parameter value defining the position on the skeleton.
  3960.  
  3961. SFOR,
  3962. SRPL -   when associated with targets, can be used for redefining the
  3963.          position on the skeleton.
  3964.  
  3965. ISKE -   the value 2 indicates that the VPHS and MCOG tags defined for
  3966.          each target.
  3967.  
  3968. VARIABLES
  3969.  
  3970. x, y, z - Parameter space defining the position of the target object on
  3971.           the skeleton.
  3972.  
  3973. DESCRIPTION
  3974.  
  3975. This method moves the COGs of the targets to the skeleton. The position on
  3976. the skeleton is defined by the tag VPHS associated with the target object
  3977. in question. However, SRPL and SPHS tags allows a more powerful way to
  3978. define the same thing: the position can be defined using whatever formula
  3979. to define proper values for x,y and z variables. If the value changes
  3980. during the animation, the position of the target object on the skeleton
  3981. changes correspondingly.
  3982.  
  3983. The VOFF tag defines the offset between the skeleton and target COGs. If
  3984. not present, each target COG is snapped over the skeleton.
  3985.  
  3986.                             - REFERENCE 2.10 -
  3987.  
  3988. By default the tag VPHS is automatically defined by snapping the COG of
  3989. the target onto the skeleton and detecting which parameter value of the
  3990. skeleton corresponds to that position. The difference between these two
  3991. points are then used for defining the value for the tag MCOG.
  3992.  
  3993. 2.2.10 Skeleton
  3994.  
  3995. PURPOSE
  3996.  
  3997. Skeletonal control
  3998.  
  3999. SYNTAX
  4000.  
  4001. Figure R2-11: (PICTURE: R2-11)
  4002.  
  4003. PARAMETERS:
  4004.  
  4005. primary - primary skeleton object defining the direction for the target
  4006.           objects
  4007.  
  4008. secondary - secondary skeleton object defines how the target objects are
  4009.             oriented about the primary skeleton.
  4010.  
  4011. TAGS
  4012.  
  4013. VOFF -   displacement between target COG and skeleton objects
  4014.  
  4015. VPHS -   parameter value defining the position on the skeleton.
  4016.  
  4017. SFOR,
  4018. SRPL -   when these tags are associated with the targets, variables x, y
  4019.          and z can be used for redefining the position of the target
  4020.          object.
  4021.  
  4022. ISKE -   Indicates that the VPHS, VDIR, and VDIV tag definitions are
  4023.          executed.
  4024.  
  4025. VARIABLES
  4026.  
  4027. x, y, z - position of the target object.
  4028.  
  4029. DESCRIPTION:
  4030.  
  4031. Skeleton parameter "primary" is connected to the targets using move &
  4032. rotate transformations. By modifying the skeleton objects, the targets
  4033. are modified accordingly. Skeletons are typically modified using Inverse
  4034. Kinematics. The second parameter is needed to fully define the direction
  4035. for the target objects. By rotating this object about the skeleton, all
  4036. the target objects will also rotate about the skeleton.
  4037.  
  4038. The VOFF tag defines the offset between the skeleton and the target COGs.
  4039. If not present, each target COG is snapped over the skeleton.
  4040.  
  4041. By default the MCOG, VDIR, VDIV and VPHS tags are defined automatically
  4042. for each target.
  4043.  
  4044. Note:
  4045. The hierarchical combination of SIMPLE SKELETON/SKELETON with the INV
  4046. KINEMATIC method is a common way to create "Character Animations".
  4047.  
  4048.                             - REFERENCE 2.11 -
  4049.  
  4050. 2.2.11 Inv kinematic
  4051.  
  4052. PURPOSE
  4053.  
  4054. Modify skeletons by re-defining or manipulating the end point only.
  4055.  
  4056. SYNTAX:
  4057.  
  4058. Figure R2-12: (PICTURE: R2-12)
  4059.  
  4060. PARAMETERS:
  4061.  
  4062. path-    evaluable parameter that defines the end point for the skeletonal
  4063.          object
  4064.  
  4065. TAGS
  4066.  
  4067. VOFF -   Offset vector.
  4068.  
  4069. SRPL,
  4070. SFOR -   Formula/procedure for defining the end point
  4071.  
  4072. VPHS -   Phase for end point evaluation
  4073.  
  4074. VARIABLES
  4075.  
  4076. a, b, c - endpoint
  4077.  
  4078. DESCRIPTION:
  4079.  
  4080. Applies Inverse Kinematic evaluation to the targets while moving their
  4081. end-points along "path". Inverse Kinematics attempts to move the end point
  4082. of the skeleton to a defined point without changing the distance of points
  4083. used for defining the skeleton.
  4084.  
  4085. Variables a, b and c reflect the endpoint defined by the evaluation
  4086. process and can be changed by user defined SRPL and SFOR tags.
  4087.  
  4088. 2.2.12 Morphing open & closed
  4089.  
  4090. PURPOSE
  4091.  
  4092. Morphing based on key-frames
  4093.  
  4094. SYNTAX
  4095.  
  4096. Figure R2-13: (PICTURE: R2-13)
  4097.  
  4098. PARAMETERS:
  4099.  
  4100. key1,
  4101. key2, ... two or more key-frame objects
  4102.  
  4103. TAGS
  4104.  
  4105. VOFF -   displacement for the target object
  4106.  
  4107.                             - REFERENCE 2.12 -
  4108.  
  4109. VARIABLES
  4110.  
  4111. None
  4112.  
  4113. DESCRIPTION:
  4114.  
  4115. This Method can be used to apply morphing to the targets. The hierarchical
  4116. structure of the target should correspond to the structure of "key"
  4117. objects. At least two key objects are needed. Cubical B-Spline
  4118. interpolation is used for defining intermediate situations.
  4119.  
  4120. The targets object data structure is just used as the space in the
  4121. hierarchy to store the results of the morphing. Modifying it does not
  4122. affect the actual result of the animation.
  4123.  
  4124. If the targets contain material references, morphing is also applied them
  4125. too. Different materials must be created and used for the target and the
  4126. "keys" as their material data structures is/are again used to store the
  4127. morphing results.
  4128.  
  4129. The following material properties are morphed:
  4130.  
  4131. - S-map u, v, w & h
  4132. - X-Freq & Y-Freq
  4133. - Transparent Color
  4134. - Specularity
  4135. - Specular Brightness
  4136. - Brilliance
  4137. - Transparency
  4138. - Turbidity
  4139. - Turbidity Saturation
  4140. - Refraction
  4141. - Effect Level
  4142. - Roughness
  4143. - Bump height
  4144. - Dither
  4145. - a & b variables for each Procedural expression
  4146.  
  4147. 2.2.13 Transform
  4148.  
  4149. PURPOSE
  4150.  
  4151. Time transformations
  4152.  
  4153. SYNTAX
  4154.  
  4155. Figure R2-14: (PICTURE: R2-14)
  4156.  
  4157. PARAMETERS
  4158.  
  4159. coord -  axis or coordsys primitive to which the evaluated point from
  4160.          "trans" is projected.
  4161.  
  4162. trans -  time is mapped to the parameter space of this evaluable
  4163.          parameter.
  4164.  
  4165. TAGS
  4166.  
  4167. None
  4168.  
  4169. VARIABLES
  4170.  
  4171. None
  4172.  
  4173. DESCRIPTION:
  4174.  
  4175. Local time transformation. This differs from other methods in that its
  4176. "target" is actually the local time being passed by the Animation System
  4177. to each method. After the time has passed through the TRANSFORM method
  4178. then the local time will have been changed to a new value according to
  4179. the parameters.
  4180.  
  4181.                             - REFERENCE 2.13 -
  4182.  
  4183. The method re-maps the parameter space of the "trans" parameter by
  4184. projecting it onto the "coord" parameter. If the "coord" parameter is
  4185. an axis, then the transformation affects only the first component of the
  4186. time (t). If it is a a coordsys, then other dimensions can also be defined
  4187. (u, v).
  4188.  
  4189. 2.2.14 Wave
  4190.  
  4191. SYNTAX
  4192.  
  4193. Figure R2-15: (PICTURE: R2-15)
  4194.  
  4195. PARAMETERS
  4196.  
  4197. coordsys - coordsys or axis primitive defining wave direction
  4198.  
  4199. wave -   any evaluable object defining a shape of the wave
  4200.  
  4201. TAGS
  4202.  
  4203. None
  4204.  
  4205. VARIABLES
  4206.  
  4207. x, y, z - position of the target in the object space of "coordsys"
  4208.  
  4209. fx, fy, fz - position corresponding x, y and z variables
  4210.  
  4211. t, u, v - current time
  4212.  
  4213. DESCRIPTION
  4214.  
  4215. This method applies "wave" effect over all the target objects. If the
  4216. target object is a freeform, then the wave is applied separately to each
  4217. individual point. If the target object is non-freeform (hierarchical
  4218. "level" object, quadric etc.) then it is treated as a whole.
  4219.  
  4220. If the first parameter object is "coordsys", the targets are moved
  4221. parallel to the "z" axis of it and the targets projections to "x" and "y"
  4222. axis are used as parameters for evaluating pints from the second parameter
  4223. object. These evaluated pints are projected to the "z" axis and the
  4224. difference between the projected points are used for defining how much the
  4225. target in question should be moved. If the second parameter object is a
  4226. mesh (or any evaluable object sensitive to the first two component of the
  4227. parameter space) the wave shape can be defined separately in both the "x"
  4228. and "y" directions.
  4229.  
  4230. If the first parameter object is "axis", then radial waves are created and
  4231. the distance between the target and the axis is used as a parameter for
  4232. evaluating the shape of the wave from the second parameter object.
  4233.  
  4234. The user can define whatever control curve for wave generation by
  4235. attaching a formula or procedure to the method object with the tags SRPL
  4236. and SFOR and by defining the variables "fx", "fy" and "fz". The variables
  4237. "x", "y" and "z" represent the current position of the target object in
  4238. question in the object space of the first parameter object. If the first
  4239. parameter object is "axis" then the "x" variable reflects the distance
  4240. between the target and the axis and the "y" reflects the targets
  4241. projection to the axis.
  4242.  
  4243.                             - REFERENCE 2.14 -
  4244.  
  4245. EXAMPLE
  4246.  
  4247. Symmetrical sin waves
  4248.  
  4249. 1. Create a mesh
  4250.  
  4251.        +------+
  4252.        | Root |
  4253.        +------+
  4254.           /
  4255.      +------+
  4256.      | mesh |
  4257.      +------+
  4258.  
  4259. 2. Create the method WAVE
  4260.  
  4261.          +------+
  4262.          | Root |
  4263.          +------+
  4264.            /  \
  4265.      +------++----------+
  4266.      | mesh || Level(M) |
  4267.      +------++----------+
  4268.  
  4269. 3. Create axis inside the method so that
  4270. it is perpendicular to the mesh
  4271.  
  4272.          +------+
  4273.          | Root |
  4274.          +------+
  4275.            /  \
  4276.      +------++----------+
  4277.      | mesh || Level(M) |
  4278.      +------++----------+
  4279.                 /
  4280.            +------+
  4281.            | axis |
  4282.            +------+
  4283.  
  4284. 4. Create a circle beside the axis.
  4285.  
  4286.          +------+
  4287.          | Root |
  4288.          +------+
  4289.            /  \
  4290.      +------++----------+
  4291.      | mesh || Level(M) |
  4292.      +------++----------+
  4293.                 /     \
  4294.            +------++--------+
  4295.            | axis || circle |
  4296.            +------++--------+
  4297.  
  4298. 2.2.15 Radial force
  4299.  
  4300. SYNTAX
  4301.  
  4302.                               / FMAS 10
  4303.      +--------+  +----------+/
  4304.      | Object |--| particle |-- VVEL 0 0 0
  4305.      +--------+\ +----------+\
  4306.                 \+----------+ \ VSPI 0 0 0
  4307.                  | Level(M) |
  4308.                  +----------+\
  4309.                               \
  4310.                                \+--------+
  4311.                                 | center |
  4312.                                 +--------+
  4313.  
  4314. Figure R2-16:
  4315.  
  4316. PARAMETERS
  4317.  
  4318. center - evaluable primitive defining a "center" of the force.
  4319.  
  4320. TAGS
  4321.  
  4322. FMAS -   mass
  4323.  
  4324. VVEL -   velocity
  4325.  
  4326. VARIABLES
  4327.  
  4328. x, y, z - COG of target object
  4329.  
  4330. a, b, c - velocity of target object
  4331.  
  4332. i, j, k - spin of target object
  4333.  
  4334. d -      size (diameter) of target
  4335.  
  4336. m1 -     mass of target object
  4337.  
  4338. m2 -     mass of parameter object
  4339.  
  4340. dt -     time interval between subsequent animation samples
  4341.  
  4342. e -      kinetic energy of target
  4343.  
  4344. f -      strength of the force
  4345.  
  4346. t, u , v - current time
  4347.  
  4348. fx, fy, fz - direction of the force (unit vector)
  4349.  
  4350. s -      distance between parameter target objects
  4351.  
  4352.                             - REFERENCE 2.15 -
  4353.  
  4354. DESCRIPTION
  4355.  
  4356. Modifies velocity of the objects by applying a force radiating from the
  4357. "center".
  4358.  
  4359. The default formula used for defining force field is f = m1*m2/d<, which
  4360. makes RADIAL FORCE act like gravity on a planetary scale. A small offset
  4361. (0.05) is added to d< to prevent extreme behavior of particles.
  4362.  
  4363. The method can be customized by associating SFOR and SRPL tags with it.
  4364. The direction of the force (fx, fy, fz) and the strength of the force (f)
  4365. can be freely modified/redefined. All other variables are "read only".
  4366.  
  4367. The velocity of the object is modified according to Newtons laws of motion
  4368. F = ma, where "F" is the strength of the force, "m" is a mass of the
  4369. object and the "a" is the acceleration.
  4370.  
  4371. For example, if the strength of the force field is "F", the mass of the
  4372. target object is "m", the time interval between subsequent frames is "dt"
  4373. then the velocity of the object is changed by "dv".
  4374.  
  4375.                 dv     F * dt
  4376.      F=m*a=>F=m*--=>dv=------
  4377.                 dt       m
  4378.  
  4379. SEE ALSO
  4380.  
  4381. PROCESSOR method
  4382.  
  4383. 2.2.16 Directed force
  4384.  
  4385. SYNTAX
  4386.  
  4387.                               / FMAS 10
  4388.      +--------+  +----------+/
  4389.      | Object |--| particle |-- VVEL 0 0 0
  4390.      +--------+\ +----------+\
  4391.                 \+----------+ \ VSPI 0 0 0
  4392.                  | Level(M) |
  4393.                  +----------+\
  4394.                               \
  4395.                                \+--------+
  4396.                                 | direct |
  4397.                                 +--------+
  4398.  
  4399. Figure R2-17
  4400.  
  4401. PARAMETERS
  4402.  
  4403. direct - evaluable parameter defining the direction and center of the
  4404.          force field
  4405.  
  4406. TAGS
  4407.  
  4408. FMAS -   mass (kg)
  4409.  
  4410. VVEL -   velocity (m/s)
  4411.  
  4412. VSPI -   spin (rad/s)
  4413.  
  4414. VARIABLES
  4415.  
  4416. x, y, z - COG
  4417.  
  4418. a, b, c - Velocity
  4419.  
  4420. i, j, k - Spin
  4421.  
  4422. d -      size (diameter)
  4423.  
  4424. m1 -     mass
  4425.  
  4426. dt -     duration
  4427.  
  4428. e -      kinetic energy
  4429.  
  4430. f -      strength of the force
  4431.  
  4432. t, u, v - current time
  4433.  
  4434. fx, fy, fz - direction of the force field (unit vector)
  4435.  
  4436. s -      distance between center of force field and the object in question
  4437.  
  4438. DESCRIPTION
  4439.  
  4440. Modifies the velocity of particles by applying an external force. The
  4441. direction and strength are defined by evaluating the parameter object. The
  4442. direction of the force field is the evaluated direction of the parameter
  4443. object and the strength is defined by the distance between the object in
  4444. question and the evaluated position (center of the force field) of the
  4445. parameter object.
  4446.  
  4447.                             - REFERENCE 2.16 -
  4448.  
  4449. Default force is defined using the formula f = 1000.0/(1+s), where "s" is
  4450. the distance from the center of the force field.
  4451.  
  4452. User defined formulas and procedures can change the variables "f" and "fx,
  4453. fy, fz". All other variables are read only.
  4454.  
  4455. The velocity of the object is modified according to the Newtons laws of
  4456. motion: F = m * a. In other words, if the force affects the object for the
  4457. time of "dt", then the velocity is changed by the value "dv" according to
  4458. the following equation:
  4459.  
  4460.         F * dt
  4461.      dv=------
  4462.           m
  4463.  
  4464. 2.2.17 Tangent force
  4465.  
  4466. SYNTAX:
  4467.  
  4468.                               / FMAS 10
  4469.      +--------+  +----------+/
  4470.      | Object |--| particle |-- VVEL 0 0 0
  4471.      +--------+\ +----------+\
  4472.                 \+----------+ \ VSPI 0 0 0
  4473.                  | Level(M) |
  4474.                  +----------+\
  4475.                               \
  4476.                                \+------+
  4477.                                 | axis |
  4478.                                 +------+
  4479.  
  4480. Figure R2-18:
  4481.  
  4482. PARAMETERS:
  4483.  
  4484. axis -   valuable parameter defining the axis of the rotating cylindrical
  4485.          field of force.
  4486.  
  4487. TAGS
  4488.  
  4489. FMAS -   mass
  4490.  
  4491. VVEL -   velocity
  4492.  
  4493. VSPI -   spin
  4494.  
  4495. VARIABLES
  4496.  
  4497. x, y, z - COG
  4498.  
  4499. a, b, c - velocity
  4500.  
  4501. i, j, k - spin
  4502.  
  4503. d -      size
  4504.  
  4505. m1 -     mass
  4506.  
  4507. dt -     duration
  4508.  
  4509. e -      kinetic energy
  4510.  
  4511. f -      strength of the force
  4512.  
  4513. t, u, v - current time
  4514.  
  4515. fx, fy, fz - direction of the force field
  4516.  
  4517. s -      distance between center of the force and the object in question
  4518.  
  4519. DESCRIPTION:
  4520.  
  4521. Modifies velocity and spin of objects by applying a force that is
  4522. perpendicular to the vector between the COG of the particle and the axis
  4523. of the force field. The direction and strength of this rotating force is
  4524. derived by evaluating the "axis" parameter for the current time.
  4525.  
  4526. The default force is defined using the equation f = 1000/s where "s" is
  4527. the distance between center of the force field and the object in question.
  4528.  
  4529. The force affects the object according to the Newtons laws of motion. The
  4530. direction of it is defined using the "right hand rule".
  4531.  
  4532.                             - REFERENCE 2.17 -
  4533.  
  4534. 2.2. 18 Collision
  4535.  
  4536. SYNTAX
  4537.                                / FFRI 0.7
  4538.                                | ICSM 2
  4539.      +--------+  +----------+  | FREB 0.5
  4540.      | Object |--| target1  |--< FMAS 10.5    / FFRI 0.7
  4541.      +--------+\ +----------+  | VVEL 0 0 0   | ICSM 2
  4542.                 \+----------+  | VSPI 0 1 0   | FREB 0.5
  4543.                  | Level(M) |  \ FSIZ 1.5     | FMAS 10.5
  4544.                  +----------+\               /| VVEL 0 0 0
  4545.                               \             / | VSPI 0 1 0
  4546.                                \+--------+ /  \ FSIZ 1.5
  4547.                                 | param1 |/
  4548.                                 +--------+
  4549.  
  4550. Figure R2-19:
  4551.  
  4552. PARAMETERS
  4553.  
  4554. Objects with which the target objects can collide.
  4555.  
  4556. TAGS
  4557.  
  4558. FREB -   Rebound Energy
  4559.  
  4560. FFRI -   Surface Friction
  4561.  
  4562. ICSM -   Collision Surface Sampling
  4563.  
  4564. FMAS -   Mass
  4565.  
  4566. VSPI -   Spin
  4567.  
  4568. VVEL -   Velocity
  4569.  
  4570. FSIZ -   Size of the bounding sphere
  4571.  
  4572. VARIABLES
  4573.  
  4574. m1 -     mass of the collided parameter object
  4575.  
  4576. m2-      mass of the collided target object
  4577.  
  4578. s -      distance between COGs
  4579.  
  4580. a, b, c - relative velocity vector (v2 - v1 )
  4581.  
  4582. i, j, k - relative spin
  4583.  
  4584. e -      relative kinetic energy
  4585.  
  4586. t, u, v - current time
  4587.  
  4588. o1, o2 - addresses of collided objects 
  4589.  
  4590. I -      1 = process collision,
  4591.          2 = do not process collision,
  4592.          3 = fatal error
  4593.  
  4594. p1, p2 - addresses of internal collision data structures
  4595.  
  4596. DESCRIPTION
  4597.  
  4598. Non-interactive collision detection. Collisions are detected only between
  4599. targets and parameter objects.
  4600.  
  4601. The COLLISION method affects the motion of the particles using principles
  4602. related to natural physical laws. Each collision transfers kinetic energy
  4603. between the particles involved. The velocity of each particle after a
  4604. collision is dependent on their initial velocities. In addition, velocity
  4605. is converted to spin and vice versa depending on the shape of the objects
  4606. and where they collide.
  4607.  
  4608. The tag FREB defines a floating-point value which describes how the energy
  4609. of motion is changed by the collision. The new velocity of the objects is
  4610. the product of its/their current velocity and the average of the Rebound
  4611. Energy. If both tags equal 1.0, the collision is totally elastic and no
  4612. motion energy is lost. If both values are 0.0, collision is totally non-
  4613. elastic and the particles "stick" together. Values greater than 1.0 means
  4614. that the velocity of the particles increases for each collision.
  4615.  
  4616. The tag which affects how the spin and velocity interact as particle
  4617. surfaces "rub" against each other is FFRI. This is the "surface-friction"
  4618. of each particle. The higher the value of this tag the more the velocity
  4619. alters spin for each collision and vice versa.
  4620.  
  4621. Both these properties can have any positive value. If they are absent then
  4622. the default value for FREB is 1.0 and for FFRI is 0.0. Values between 0.0
  4623. and 2.0 for FFRI produce results resembling normal physical friction
  4624. effects, with a value of 0.5 being typical. Values greater than 2.0 will
  4625. produce un-natural or extreme surface-friction behavior.
  4626.  
  4627.                             - REFERENCE 2.18 -
  4628.  
  4629. The final tag for controlling collision behavior is ICSM (Integer
  4630. Collision Sampling). When two particles come within initial collision
  4631. range their ICSM tags are checked. If present the tag determines how
  4632. finely to spatially-sample the surfaces used for the surface-collision
  4633. detection. The lowest sampling value of the particle pair is used.
  4634.  
  4635. ICSM can have the following value:
  4636.  
  4637. 0 - Default (same as ICSM absent)
  4638. 1 - Increased sampling
  4639. 2 - Maximal sampling
  4640.  
  4641. For basic collisions where the particles collide and immediately rebound
  4642. the default is adequate, but if particles "slide" or "roll" over each
  4643. other, or if surface-friction effects are involved, then one of the higher
  4644. values may be required to produce realistic results. If the spatial-
  4645. sampling is not high enough then some surface penetration can result in
  4646. incorrect collision effects.
  4647.  
  4648. The user defined SFOR and SRPL formula/procedure can be used for
  4649. customizing collision processing. The variable "I" is used for defining
  4650. whether the collision should be processed. If the value of this variable
  4651. is 1, collision is detected and will affect the velocities/spins of the
  4652. collided objects. The value 2 indicates that no collision was detected. By
  4653. having the value of this variable always at 2, the user defined formula
  4654. can disable all collisions. The value of 0 indicates a fatal error and
  4655. animation playing is cancelled.
  4656.  
  4657. When using an RPL word as a collision hook function, the variables o1, o2
  4658. and p1, p2 provides the user with total control over collision processing.
  4659. The variables o1 and o2 contain the addresses of objects between whom the
  4660. collision detection should be applied.
  4661.  
  4662. The variables p1 and p2 points to internal data structures described below
  4663. where all data used for processing collisions can be found. This interface
  4664. can be used for modifying velocities and spins of objects directly.
  4665.  
  4666. Offset  Field  Size  Description
  4667. --------------------------------
  4668.   0      aObj   4     Address of the object
  4669.  
  4670.   4      aCOG   4     Address of the COG of the object
  4671.  
  4672.   8      aVel   4     Address of the VVEL tag value the object.
  4673.  
  4674.  12      aSpi   4     Address of the VSPI tag value.
  4675.  
  4676.  16      fSiz   8     Size of the bounding sphere of the object
  4677.  
  4678.  24      fMas   8     Mass of the object
  4679.  
  4680. --------------------------------
  4681.  
  4682. 2.2.19 Int collision
  4683.  
  4684. SYNTAX
  4685.  
  4686.                                / FFRI 0.7
  4687.                                | ICSM 2
  4688.      +--------+  +----------+  | FREB 0.5
  4689.      | Object |--| target1  |--< FMAS 10.5
  4690.      +--------+\ +----------+  | VVEL 0 0 0
  4691.                 \+----------+  | VSPI 0 1 0
  4692.                  | Level(M) |  \ FSIZ 1.5  
  4693.                  +----------+
  4694.  
  4695. Figure R2-20
  4696.  
  4697. PARAMETERS
  4698.  
  4699. None
  4700.  
  4701. TAGS
  4702.  
  4703. FREB -   Rebound Energy
  4704.  
  4705. FFRI -   Surface Friction
  4706.  
  4707. ICSM -   Collision Surface Sampling
  4708.  
  4709.                             - REFERENCE 2.19 -
  4710.  
  4711. FMAS -   Mass
  4712.  
  4713. VSPI -   Spin
  4714.  
  4715. VVEL -   Velocity
  4716.  
  4717. FSIZ -   Size of the bounding sphere
  4718.  
  4719.  
  4720. VARIABLES
  4721.  
  4722. m1 -     mass of the collided parameter object
  4723.  
  4724. m2 -     mass of the collided target object
  4725.  
  4726. s -      distance between COGs
  4727.  
  4728. a, b, c - relative velocity vector (v2 - v1)
  4729.  
  4730. i, j, k - relative spin
  4731.  
  4732. e -      relative kinetic energy
  4733.  
  4734. t, u, v - current time
  4735.  
  4736. o1, o2 - addresses of collided objects
  4737.  
  4738. I -      1 = process collision,
  4739.          2 = do not process collision,
  4740.          3 = fatal error
  4741.  
  4742. p1 , p2 - addresses of internal collision data structures
  4743.  
  4744. DESCRIPTION
  4745.  
  4746. Interactive collision detection. Like the non-interactive collision
  4747. detection this only modifies the velocity and spin of the particles
  4748. involved. However, collisions are detected between all particles at the
  4749. same level as the INT COLLISION method, and the motion of all colliding
  4750. particles interact.
  4751.  
  4752. SEE ALSO
  4753.  
  4754. COLLISION
  4755.  
  4756. 2.2.20 Friction
  4757.  
  4758. SYNTAX
  4759.  
  4760.                               / VVEL 0 0 0
  4761.      +--------+  +----------+/
  4762.      | Object |--| particle |-- VSPI 0 0 0
  4763.      +--------+\ +----------+\  FSIZ 0.5
  4764.                 \+----------+ \ FMAS 100
  4765.                  | Level(M) |
  4766.                  +----------+
  4767.  
  4768. Figure R2-21
  4769.  
  4770. PARAMETERS
  4771.  
  4772. None
  4773.  
  4774. TAGS
  4775.  
  4776. FMAS -   mass
  4777.  
  4778. FSIZ -   size
  4779.  
  4780. VVEL -   velocity
  4781.  
  4782. VSPI -   spin
  4783.  
  4784. VARIABLES
  4785.  
  4786. x, y, z - COG (position) of the object
  4787.  
  4788. a, b, c - velocity .
  4789.  
  4790. i, j, k - spin 
  4791.  
  4792. d -      size (diameter)
  4793.  
  4794. m1 -     mass
  4795.  
  4796. dt -     time interval (duration)
  4797.  
  4798. e -      kinetic energy
  4799.  
  4800. f -      coefficient of friction
  4801.  
  4802. t, u, v - current time
  4803.  
  4804.                             - REFERENCE 2.20 -
  4805.  
  4806. DESCRIPTION
  4807.  
  4808. Frictional force evaluation. This method slows down the velocity and spin
  4809. of objects at the same level. The SFOR tag can be used to define custom
  4810. friction formulas.
  4811.  
  4812. The variable f contains the default "coefficient of friction", the default
  4813. value for this is evaluated using the following formula:
  4814.  
  4815.        d * e²
  4816.      f=------
  4817.        d*e²+m
  4818.  
  4819. This coefficient is used for modifying the velocity and the spin of
  4820. objects according to the following formulas:
  4821.  
  4822.      vel(new) = vel(old) * (1 - f)
  4823.  
  4824.      spi(new) = spi(old) * (1 - f)
  4825.  
  4826.  
  4827. In other words, the bigger the object, the higher the coefficient and the
  4828. more the friction force slows it down. If the size of the object is 0,
  4829. force would'nt affect it at all.
  4830.  
  4831. The bigger the mass, the less the friction can affect the velocity of the
  4832. object.
  4833.  
  4834. The user defined formula/procedure can change the following variables:
  4835.  
  4836. f -      coefficient
  4837.  
  4838. a, b, c - velocity
  4839.  
  4840. i, j, k - spin
  4841.  
  4842. All other variables are read only.
  4843.  
  4844. 2.2.21 CREATION
  4845.  
  4846. SYNTAX
  4847.  
  4848.                               / SDEL I=t>0.5
  4849.      +--------+  +----------+/
  4850.      | Object |--| target   |-- VCRE 0 0 0
  4851.      +--------+\ +----------+
  4852.                 \+----------+
  4853.                  | Level(M) |\ +--------+ / SCRE I=t>0
  4854.                  +----------+ \| sample |/
  4855.                                +--------+
  4856.  
  4857. Figure R2-22
  4858.  
  4859. PARAMETERS
  4860.  
  4861. sample - Sample objects for procedural creation
  4862.  
  4863. TAGS
  4864.  
  4865. VCRE -   creation time
  4866.  
  4867. SCRE -   formula used for procedural creation
  4868.  
  4869. SDEL -   formula used for procedural deletion
  4870.  
  4871. VARIABLES
  4872.  
  4873. x, y, z - position of the object
  4874.  
  4875. a, b, c - velocity
  4876.  
  4877. i, j, k - spin
  4878.  
  4879. d -      size
  4880.  
  4881. m1 -     mass
  4882.  
  4883. dt -     time interval
  4884.  
  4885. e -      kinetic energy
  4886.  
  4887. t, u, v - current time
  4888.  
  4889. fx, fy, fz - birdth day
  4890.  
  4891. I -      boolean value for deletion/creation
  4892.  
  4893.                             - REFERENCE 2.21 -
  4894.  
  4895. DESCRIPTION
  4896.  
  4897. This method is one of the most unusual of the built in methods. It
  4898. actually creates and deletes objects during animations. Objects are
  4899. created and deleted depending on how the SCRE String CREation formula tag
  4900. evaluates for each parameter and how the SDEL (String DELetion formula)
  4901. tag evaluates for each target.
  4902.  
  4903. For each parameter object that the SCRE formula evaluates to a non-zero
  4904. value then the object is created at the same level as the CREATION method;
  4905. effectively becoming a target for possible deletion.
  4906.  
  4907. For each target that the SDEL formula evaluates to a non-zero value then
  4908. the object is deleted.
  4909.  
  4910. If the parameters do not contain a SDEL formula or the formula never
  4911. evaluates to non-zero, then this method will continue to create without
  4912. deletion until the animation ends or the available memory is exhausted.
  4913.  
  4914. If there isn't a SCRE tag associated with the parameter object, method
  4915. never creates it. This makes it possible to use other methods for
  4916. animating sample objects of creation method. For example, boiling water,
  4917. fireworks etc. phenomena can be easily created this way.
  4918.  
  4919. The tag VCRE is automatically created for all created targets for saving
  4920. the birthday of the object in question. This information can be used for
  4921. deleting objects according to their ages.
  4922.  
  4923. The possibIe values for the variable "I" are:
  4924.  
  4925. 1 -      Object is either created or deleted depending on the tag in
  4926.          question (SCRE, SDEL)
  4927.  
  4928. 0 -      Object is not created or deleted
  4929.  
  4930. All other variables are "read only".
  4931.  
  4932. If there are SFOR or SRPL tags associated with the method object, they are
  4933. processed after the SCRE and SDEL tags.
  4934.  
  4935. 2.2.22 Processor
  4936.  
  4937. SYNTAX
  4938.  
  4939.                               / VVEL 0.64-0
  4940.      +--------+  +----------+/
  4941.      | Object |--| particle |-- VSPI 0 0 0
  4942.      +--------+\ +----------+
  4943.                 \+----------+
  4944.                  | Level(M) |
  4945.                  +----------+
  4946.  
  4947. Figure R2-23
  4948.  
  4949. PARAMETERS
  4950.  
  4951. None
  4952.  
  4953. TAGS
  4954.  
  4955. None
  4956.  
  4957. VARIABLES
  4958.  
  4959. a, b, c - velocity
  4960.  
  4961. i, j, k - spin
  4962.  
  4963. DESCRIPTION
  4964.  
  4965. This method processes the motion properties of each target object into
  4966. Move and Rotate transformations according to the Newtons laws of motion.
  4967.  
  4968. If a velocity tag is associated with the target object, it is read and the
  4969. object is moved according to the following formula:
  4970.  
  4971.       s
  4972.      v- => s=v*t
  4973.       t
  4974.  
  4975. where "v" is the velocity of the object (VVEL), and "t" is a time interval
  4976. between subsequent frames (animation samples).
  4977.  
  4978. If a spin tag is associated with the target object, the object is rotated
  4979. according to the following formula:
  4980.  
  4981.                             - REFERENCE 2.22 -
  4982.  
  4983.        2*PI Rad      w * t
  4984.      w=--------=>RAD=------
  4985.            t         2 * PI
  4986.  
  4987. where w is a spin defined by VSPI tag, "t" is the time interval, PI is
  4988. 3.14 and "Rad" is the angle in radians.
  4989.  
  4990. 2.2.23 RPL
  4991.  
  4992. SYNTAX
  4993.  
  4994.      +--------+
  4995.      | Object |\
  4996.      +--------+ \+------------+
  4997.                  | Object (M) |--- SRPL Proc
  4998.                  +------------+
  4999.  
  5000. Figure R2-24
  5001.  
  5002. PARAMETERS
  5003.  
  5004. The number and type of parameters required for this method are entirely
  5005. dependent upon the implementation of the method procedure attached to it
  5006. via the SRPL tag.
  5007.  
  5008. VARIABLES
  5009.  
  5010. Any
  5011.  
  5012. DESCRlPTION
  5013.  
  5014. A method whose method procedure is defined with a single line of RPL text.
  5015.  
  5016. This method executes the user specified RPL "text" every time the object
  5017. animation time is changed. This "text" acts as the method procedure. The
  5018. "text" is just passed to RPL interpreter. It can contain a short
  5019. interactive program, the name of a user defined RPL word or it can contain
  5020. the "LOAD" word with a file-name; which loads and executes the actual
  5021. program from the named file. The RPL interpreter for executing this "text"
  5022. resides in the "Master" environment so it is necessary to use "INHERIT"
  5023. if the word definition was created in an RPL window.
  5024.  
  5025. The program should not contain any variable or word definitions because
  5026. they will be redefined every time the method procedure is executed (which
  5027. happens at least once per frame).
  5028.  
  5029.                             - REFERENCE 2.23 -
  5030.  
  5031. Chapter3 RPL SYNTAX
  5032. -------------------
  5033.  
  5034. Following prefixes are used for variables and constans to indicate the
  5035. type of the variable.
  5036.  
  5037. a -      generic address
  5038.  
  5039. b -      byte (8 bits)
  5040.  
  5041. e -      either integer or floating-point value
  5042.  
  5043. f -      floating-point value
  5044.  
  5045. i -      long integer value (32 bits)
  5046.  
  5047. I -      boolean flag. 0 deNote:s FALSE, any other value deNote:s TRUE.
  5048.  
  5049. s -      address of a sting
  5050.  
  5051. v -      vector (consist of three floating-point values)
  5052.  
  5053. w -      short integer value (16 bits)
  5054.  
  5055. CFA -    Code Field Address. The address of a defined word on the
  5056.          Vocabulary Stack.
  5057.  
  5058. name -   The text for an RPL token (word or variable).
  5059.  
  5060. NULL -   The integer value zero.
  5061.  
  5062. 3.1 KERNEL WORDS
  5063.  
  5064. This sub-chapter contains the syntax and descriptions for all the general
  5065. usage words built-in to RPL's vocabulary when a RPL window is initially
  5066. opened.
  5067.  
  5068. WORD
  5069.  
  5070.      (
  5071.  
  5072. TEMPLATE
  5073.  
  5074.      (
  5075.  
  5076. DESCRIPTION
  5077.  
  5078. This defines the start of an RPL comment. All the text after it until
  5079. either ")" or EOL is ignored.
  5080.  
  5081. Note:
  5082. The two comment control words "(" and ")" are defined internally and do
  5083. not appear as part of the vocabulary.
  5084.  
  5085. EXAMPLE
  5086.  
  5087.      ( this is a comment )
  5088.      VLIST ( list vocabulary
  5089.  
  5090. WORD
  5091.  
  5092.      )
  5093.  
  5094. TEMPLATE
  5095.  
  5096.      )
  5097.  
  5098. DESCRIPTION
  5099.  
  5100. Terminates a comment before EOL reached. Other words can then follow.
  5101.  
  5102. EXAMPLE
  5103.  
  5104.      0 1 . ( top stack item, then second item ).
  5105.  
  5106. WORD
  5107.  
  5108.      .
  5109.  
  5110. TEMPLATE
  5111.  
  5112.      i.
  5113.  
  5114. DESCRIPTION
  5115.  
  5116. Takes a parameter off the stack and prints it as an integer value.
  5117.  
  5118. EXAMPLE
  5119.  
  5120.      10 .
  5121.      15.5 .
  5122.      10 20 30 1.2 ....
  5123.  
  5124.                              - REFERENCE 3.1 -
  5125.  
  5126. SEE ALSO
  5127.  
  5128.      F.H.O.B.
  5129.  
  5130. WORD
  5131.  
  5132.      .S
  5133.  
  5134. TEMPLATE
  5135.  
  5136.      .S
  5137.  
  5138. DESCRIPTION
  5139.  
  5140. Prints the whole contents of the Parameter Stack without removing any
  5141. values.
  5142.  
  5143. WORD
  5144.  
  5145.      !
  5146.  
  5147. TEMPLATE
  5148.  
  5149.      iValue aVariable !
  5150.  
  5151. DESCRIPTION
  5152.  
  5153. Assigns an integer value iValue to an integer variable aVariable.
  5154.  
  5155. Integer and floating point variables must be referenced only with words
  5156. that are for the variable type in question. For example, an integer
  5157. variable MUST NOT be referenced using F! or F@, but only with ! and @.
  5158. This is because the internal representations for similar integer and
  5159. floating-point values are different.
  5160.  
  5161. EXAMPLE
  5162.  
  5163.      VARIABLE MyVar ( define an integer variable )
  5164.  
  5165. SEE ALSO
  5166.  
  5167.      @ VARIABLE
  5168.  
  5169. WORD
  5170.  
  5171.      &
  5172.  
  5173. TEMPLATE
  5174.  
  5175.      & Word aWordAddr
  5176.  
  5177. DESCRIPTION
  5178.  
  5179. Retrieves the address of the specified word and places it on the stack.
  5180. The word can then be stored in a variable and executed by EXECUTE.
  5181.  
  5182. EXAMPLE
  5183.  
  5184.      : MyWord
  5185.       "Hello!" PUTS
  5186.      ;
  5187.  
  5188.      & MyWord EXECUTE
  5189.  
  5190. SEE ALSO
  5191.  
  5192.      ?& EXECUTE
  5193.  
  5194. WORD
  5195.  
  5196.      +
  5197.  
  5198. TEMPLATE
  5199.  
  5200.      i2 i1 + iResult
  5201.  
  5202. DESCRIPTION
  5203.  
  5204. Takes two integers off the stack, adds them, and puts the sum on the
  5205. stack.
  5206.  
  5207.                              - REFERENCE 3.2 -
  5208.  
  5209. EXAMPLE
  5210.  
  5211.      VARIABLE MyVar
  5212.  
  5213.      10 20 + MyVar ! ( MyVar = 10 + 20 )
  5214.  
  5215. WORD
  5216.  
  5217.      -
  5218.  
  5219. TEMPLATE
  5220.  
  5221.      i2 i1 - iResult
  5222.  
  5223. DESCRIPTION
  5224.  
  5225. Takes two integers off the stack, subtracts the stack top value from the
  5226. second one, and puts the difference on the stack.
  5227.  
  5228. EXAMPLE
  5229.  
  5230.      20 10-.
  5231.  
  5232. WORD
  5233.  
  5234.      *
  5235.  
  5236. TEMPLATE
  5237.  
  5238.      i2 i1 * iResult
  5239.  
  5240. DESCRIPTION
  5241.  
  5242. Takes two integers off the stack, multiplies them, and puts the product on
  5243. the stack.
  5244.  
  5245. EXAMPLE
  5246.  
  5247.      3 4 * .
  5248.  
  5249. WORD
  5250.  
  5251.      /
  5252.  
  5253. TEMPLATE
  5254.  
  5255.      i2 i1 / iResult
  5256.  
  5257. DESCRIPTION
  5258.  
  5259. Takes two integers off the stack, divides the second value on the stack by
  5260. the stack top item, and puts the integer part of the quotient on the
  5261. stack.
  5262.  
  5263. EXAMPLE
  5264.  
  5265.      10 5 / .
  5266.  
  5267. WORD
  5268.  
  5269.      :
  5270.  
  5271. TEMPLATE
  5272.  
  5273.      :
  5274.  
  5275. DESCRIPTION
  5276.  
  5277. Begins a word definition. . The ":" is followed by a space and the name,
  5278. which can be up to 15 characters, of the RPL word to be defined.
  5279.  
  5280. The definition ends with a ";".
  5281.  
  5282. EXAMPLE
  5283.  
  5284.      ( define RPL word )
  5285.      : MyFunction
  5286.         "this is RPL word" PUTS
  5287.      ;
  5288.  
  5289.      ( call it )
  5290.      MyFunction
  5291.  
  5292. SEE ALSO
  5293.  
  5294.      ;
  5295.  
  5296. WORD
  5297.  
  5298.      ;
  5299.  
  5300. TEMPLATE
  5301.  
  5302.      ;
  5303.  
  5304.                              - REFERENCE 3.3 -
  5305.  
  5306. DESCRIPTION
  5307.  
  5308. Ends a word definition.
  5309.  
  5310. SEE ALSO
  5311.  
  5312.      :
  5313.  
  5314. WORD
  5315.  
  5316.      <
  5317.  
  5318. TEMPLATE
  5319.  
  5320.      i2 i1 <lResult
  5321.  
  5322. DESCRIPTION
  5323.  
  5324. Takes two integer values off the stack and compares them. If the second
  5325. value is less than the first value, < puts TRUE on the stack, otherwise
  5326. FALSE is put on the stack.
  5327.  
  5328. WORD
  5329.  
  5330.      <=
  5331.  
  5332. TEMPLATE
  5333.  
  5334.      i2 i1 <= lResult
  5335.  
  5336. DESCRIPTION
  5337.  
  5338. Takes two integer values off the stack and compares them. If the second
  5339. value is less than or equal to the first value, <= puts TRUE on the stack,
  5340. otherwise FALSE is put on the stack.
  5341.  
  5342. WORD
  5343.  
  5344.      <>
  5345.  
  5346. TEMPLATE
  5347.  
  5348.      i2 i1 <> IResult
  5349.  
  5350. DESCRIPTION
  5351.  
  5352. Takes two integer values off the stack and compares them. If the second
  5353. value is not equal to the first value, <> puts TRUE on the stack,
  5354. otherwise FALSE is put on the stack.
  5355.  
  5356. EXAMPLE
  5357.  
  5358.      : MyTest ( i1 i2 )
  5359.       <>
  5360.       IF
  5361.         "not equal" PUTS
  5362.       ELSE
  5363.         "equal values" PUTS
  5364.       ENDlF
  5365.       ;
  5366.  
  5367.  
  5368.  
  5369.  
  5370.      10 20 MyTest ( not equal
  5371.      5 5 MyTest ( equal values
  5372.  
  5373. WORD
  5374.  
  5375.      =
  5376.  
  5377. TEMPLATE
  5378.  
  5379.      i2 i1 = IResult
  5380.  
  5381. DESCRIPTION
  5382.  
  5383. Takes two integer values off the stack and compares them. If the values
  5384. are equal, = puts TRUE on the stack, otherwise FALSE is put on the stack.
  5385.  
  5386. EXAMPLE
  5387.  
  5388.      : IsEqual ( i1 i2 )
  5389.       =
  5390.       IF
  5391.         "Yes" PUTS
  5392.       ELSE
  5393.         "No" PUTS
  5394.       ENDIF
  5395.      ;
  5396.  
  5397.      10 20 IsEqual ( no
  5398.      10 10 IsEqual ( yes
  5399.  
  5400.  
  5401.  
  5402.  
  5403.                  END OF PART 5
  5404.  
  5405.  
  5406.  
  5407.  
  5408.  
  5409.